跳转至

Docker推送镜像到仓库要几步?


2016-01-21 by dongnan

需要三步

为镜像打标记

使用docker tag 命令为镜像打上标记,比如为网易蜂巢(已改名网易云)镜像仓库推送镜像,首先需要为镜像做好标记;

目标镜像

docker images | grep nginx
ubuntu-nginx   latest cd34135ed904   About an hour ago   222 MB

其中 latest是镜像的标签,cd34135ed904是镜像的ID。

镜像标签

docker tag cd34135ed904 hub.c.163.com/dongnan/ubuntu-nginx:0315

你会发现这两个镜像对应同一个ID,所以它们是相同的(只占一份存储空间)。

docker images | grep nginx

hub.c.163.com/dongnan/ubuntu-nginx   0315               cd34135ed904       About an hour ago   222 MB
ubuntu-nginx                         latest             cd34135ed904       About an hour ago   222 MB

标签格式

hub.c.163.com/dongnan/ubuntu-nginx:0315
格式为: 仓库地址+用户名+镜像名称[:标签]
仓库地址: hub.c.163.com
用户名: dongnan
镜像名称: ubuntu-nginx
标签 :0315

镜像是按照网易蜂巢的要求(不同服务商有可能不同)。

登录仓库

为了使用网易蜂巢镜像仓库服务,我们还需要登陆这个远程仓库。

docker login -u dongnan@zongming.net -p password -e dongnan@zongming.net https://hub.c.163.com

WARNING: login credentials saved in /home/dongnan/.docker/config.json
Login Succeeded

提示信息 Login Succeeded 表示登录成功,接下来就是第三步了。

推送镜像

推送我们准备好的镜像

docker push hub.c.163.com/dongnan/ubuntu-nginx:0315

The push refers to a repository [hub.c.163.com/dongnan/ubuntu-nginx] (len: 1)
cd34135ed904: Pushed
bbdcc791806d: Pushed
# ...省略
d3a1f33e8a5a: Pushed
0315: digest: sha256:64e922825284c0f2c9def81e5789e56c368cfbf93dc6a51779203022ac9b8dea size: 13173

因为docker镜像使用分层存储技术,对于已经存在的存储层可以复用。所以第2次推送镜像速度非常快。

docker push hub.c.163.com/dongnan/ubuntu-nginx:0316

The push refers to a repository [hub.c.163.com/dongnan/ubuntu-nginx] (len: 1)
88519bf84585: Pushed
cd34135ed904: Image already exists
bbdcc791806d: Image already exists
# ...省略
d3a1f33e8a5a: Image already exists
0316: digest: sha256:a6f4f059a48626113e8cc65cf73d34201c13800b73ae6de748039eb2f848ac4f size: 14777

下载和搜索镜像

至此docker镜像就推送完成了,本篇文章到这里就结束了..... Wait好像少了点什么?示例中的镜像是从哪里来的?

真细心^_^ 一般情况下镜像是使用 docker pull 命令在Docker仓库下载的,例如:

docker pull python:3.6

python镜像是由python团队维护的官方镜像,并保存在 hub.docker.com 。 Star表示欢迎程度,Official 表示官方镜像。 你可以使用 docker search 命令搜索你需要的镜像,效果是相同的。

docker search python

此外如果你需要自定义镜像,例如需要额外安装一些python库,那么可以使用Dockerfile来完成,后续将写专门写一篇Dockerfile自定义镜像的文章。

命令帮助

本篇文章涉及5个docker 子命令,它们的功能与使用方法如下图。

参考

回到页面顶部