2.1 镜像管理(上)

任务一:拉取和查看
Docker 镜像存储在 Docker Hub 或其他镜像仓库中。我们可以使用 docker pull
命令从这些仓库中下载镜像到本地。
docker pull ubuntu:14.04
这个命令会从 Docker Hub 下载标签为 14.04 的 Ubuntu 镜像。其中 ubuntu
是镜像名称,14.04
是标签(通常表示版本)。
成功下载后,你将看到类似下图的输出:
Docker 会分层下载镜像,每一行代表一个镜像层。当所有层都下载完成后,Docker 会将这些层组合成一个完整的镜像。
Docker Hub 的网站在国外,从国内访问经常出现问题,可以选择从其他镜像仓库获取:
docker pull harbor.seahi.me/docker/ubuntu:14.04
下载完成后,使用命令 docker images
进行查看
任务二:镜像改名
先准备几个镜像用来做练习:
1. ubuntu:latest
2. helloworld:latest
3. ubuntu:14.04
可以使用 docker tag
命令为镜像改名,包括注册中心、仓库名、标签。
1.查看刚才下载镜像的ID
docker images
此命令列出本地所有镜像,包括它们的仓库名、标签、ID、创建时间和大小。
2.为镜像改标签
docker tag 13b66b487594 ubuntu:14.04a
这个命令为 ID 为 13b66b487594
的镜像创建了一个新标签 14.04a
,但仓库名仍然是 ubuntu
。
注意:添加新标签不会创建新的镜像,只是为同一个镜像创建了一个新的引用。你可以看到两个镜像条目的 ID 是相同的,这表明它们指向同一个镜像。
3.改仓库名
docker tag 13b66b487594 ubuntua:14.04a
这个命令不仅修改了标签,还修改了仓库名为 ubuntua
。
查看效果:
4.增加命名空间(等同于用户名、项目名)
docker tag 13b66b487594 docker/ubuntu:14.04
这个命令为镜像添加了 docker
命名空间,镜像名称变为 docker/ubuntu:14.04
。
查看效果:
5.增加注册中心
如果你想将镜像推送到私有仓库,需要在镜像名称前加上注册服务器的地址。
docker tag 13b66b487594 harbor.seahi.me/docker/ubuntu:14.04
这个命令指定了注册服务器为 harbor.seahi.me
。
练习
练习一:发布稳定版
我们的项目需要一个稳定的基础镜像,希望为 ubuntu:latest
打上一个新的标签 ubuntu:stable
,以表示这是我们的稳定版本。
请执行以下操作:
- 使用
docker tag
命令为ubuntu:latest
创建名为ubuntu:stable
的新标签。 - 使用
docker images
命令查看结果,并观察新标签的IMAGE ID
是否与ubuntu:latest
完全相同。
练习二:发布新版本
假设 helloworld:latest
是我们开发的应用程序镜像。现在版本 1.0 开发完毕,需要为其创建一个带版本号的标签 helloworld:v1.0
。
请执行以下操作:
- 使用
docker tag
命令,基于helloworld:latest
创建helloworld:v1.0
标签。 - 再次使用
docker tag
命令,将helloworld:v1.0
重新标记为helloworld:prod
(模拟上线生产环境)。 - 最后,使用
docker images
列出所有helloworld
相关的镜像,查看现在有几个标签。
docker images helloworld
命令,观察结果有什么特点?练习三:添加仓库路径(为推送做准备)
现在需要将旧的 ubuntu:14.04
镜像推送至公司的私有仓库 my-registry.com:5000
的 base/ubuntu
仓库中。
pull
是将镜像从网上下载到本地;推送push
是将镜像从本地上传到网上。思考:推送到网络上的哪个位置?或者说,哪个注册中心(网站)?请执行以下操作:
- 使用
docker tag
命令,为ubuntu:14.04
创建一个符合私有仓库规范的新标签my-registry.com:5000/base/ubuntu:14.04
。
问题: 为什么在推送镜像到仓库之前,必须使用 docker tag
为其添加完整的仓库地址