2.1 镜像管理(上)

系列 - Docker快速入门
实验目的
在 Docker 生态系统中,镜像是一个核心概念,它是容器运行的基础。本实验将帮助你理解 Docker 镜像的基本操作,包括下载、改名、查看信息、搜索和删除镜像,以及验证镜像的分层结构。

Docker 镜像存储在 Docker Hub 或其他镜像仓库中。我们可以使用 docker pull 命令从这些仓库中下载镜像到本地。

bash

docker pull ubuntu:14.04

这个命令会从 Docker Hub 下载标签为 14.04 的 Ubuntu 镜像。其中 ubuntu 是镜像名称,14.04是标签(通常表示版本)。

成功下载后,你将看到类似下图的输出:

Docker 会分层下载镜像,每一行代表一个镜像层。当所有层都下载完成后,Docker 会将这些层组合成一个完整的镜像。

下载失败怎么办?

Docker Hub 的网站在国外,从国内访问经常出现问题,可以选择从其他镜像仓库获取:

bash

docker pull harbor.seahi.me/docker/ubuntu:14.04 

下载完成后,使用命令 docker images 进行查看

先准备几个镜像用来做练习:

text

1. ubuntu:latest
2. helloworld:latest
3. ubuntu:14.04

可以使用 docker tag 命令为镜像改名,包括注册中心、仓库名、标签。

1.查看刚才下载镜像的ID

bash

docker images

此命令列出本地所有镜像,包括它们的仓库名、标签、ID、创建时间和大小。

2.为镜像改标签

bash

docker tag 13b66b487594 ubuntu:14.04a

这个命令为 ID 为 13b66b487594 的镜像创建了一个新标签 14.04a,但仓库名仍然是 ubuntu

注意:添加新标签不会创建新的镜像,只是为同一个镜像创建了一个新的引用。你可以看到两个镜像条目的 ID 是相同的,这表明它们指向同一个镜像。

3.改仓库名

bash

docker tag 13b66b487594 ubuntua:14.04a

这个命令不仅修改了标签,还修改了仓库名为 ubuntua

查看效果:

4.增加命名空间(等同于用户名、项目名)

bash

docker tag 13b66b487594 docker/ubuntu:14.04

这个命令为镜像添加了 docker 命名空间,镜像名称变为 docker/ubuntu:14.04

查看效果:

5.增加注册中心

如果你想将镜像推送到私有仓库,需要在镜像名称前加上注册服务器的地址。

bash

docker tag 13b66b487594 harbor.seahi.me/docker/ubuntu:14.04

这个命令指定了注册服务器为 harbor.seahi.me

我们的项目需要一个稳定的基础镜像,希望为 ubuntu:latest 打上一个新的标签 ubuntu:stable,以表示这是我们的稳定版本。

请执行以下操作:

  1. 使用 docker tag 命令为 ubuntu:latest 创建名为 ubuntu:stable 的新标签。
  2. 使用 docker images 命令查看结果,并观察新标签的 IMAGE ID 是否与 ubuntu:latest 完全相同。

假设 helloworld:latest 是我们开发的应用程序镜像。现在版本 1.0 开发完毕,需要为其创建一个带版本号的标签 helloworld:v1.0

请执行以下操作:

  1. 使用 docker tag 命令,基于 helloworld:latest 创建 helloworld:v1.0 标签。
  2. 再次使用 docker tag 命令,将 helloworld:v1.0 重新标记为 helloworld:prod(模拟上线生产环境)。
  3. 最后,使用 docker images 列出所有 helloworld 相关的镜像,查看现在有几个标签。
关于第3题的小技巧
试试 docker images helloworld 命令,观察结果有什么特点?

现在需要将旧的 ubuntu:14.04 镜像推送至公司的私有仓库 my-registry.com:5000base/ubuntu 仓库中。

推送是什么意思
推送和拉取刚好相反,拉取pull是将镜像从网上下载到本地;推送push是将镜像从本地上传到网上。思考:推送到网络上的哪个位置?或者说,哪个注册中心(网站)?

请执行以下操作:

  1. 使用 docker tag 命令,为 ubuntu:14.04 创建一个符合私有仓库规范的新标签 my-registry.com:5000/base/ubuntu:14.04

问题: 为什么在推送镜像到仓库之前,必须使用 docker tag 为其添加完整的仓库地址

相关内容