我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本博客的热心读者都知道,如果苏南大叔使用了官方的registry这个docker镜像作为仓库服务的话,可能存在的不足之处是:并没有相关权限设定。也就是说,任何可以访问仓库地址的人,都有权限拉取镜像。所以,这种操作,可能限制了对权限控制比较严格的使用场景。

本文中,苏南大叔利用阿里云的docker镜像服务,添加各种权限限制,也比较方便更大范围内的镜像分享。最重要的是,这个也免费的。有阿里云账号就可以了。

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - aliyun_hub
如何推送docker镜像到阿里云的docker仓库服务?(图10-1)

开通docker仓库

首先,苏南大叔先访问阿里云的相关仓库地址,在这里设置一个用于访问仓库的密码。这个密码和你的阿里云密码是没用什么关系的。是用于以后命令行docker login使用的,请牢记这个密码。

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 01_设置密码
如何推送docker镜像到阿里云的docker仓库服务?(图10-2)

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 02_设置密码
如何推送docker镜像到阿里云的docker仓库服务?(图10-3)

然后设置一个仓库的命名空间,一般可以设置为公司或者组织名称。苏南大叔这里设置的是sunan。然后再设置一个仓库的名字,苏南大叔设置的是test。这个镜像仓库可以设置公开或者私有。一个仓库对应的就是一个镜像,可以分别存放不同tag的同一个镜像。

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 03_创建命名空间
如何推送docker镜像到阿里云的docker仓库服务?(图10-4)

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 04_创建镜像仓库
如何推送docker镜像到阿里云的docker仓库服务?(图10-5)

设置为公有的时候,任何人都可以通过阿里云仓库的搜索功能,搜索到这个公开镜像,并且拉到本地使用。设置为私有的时候,才能通过开篇时设置的仓库密码,拉取到本地使用。

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 05_设置镜像仓库的公开度
如何推送docker镜像到阿里云的docker仓库服务?(图10-6)

一般来说,苏南大叔推荐大家设置为私有仓库。接下来,阿里云会询问镜像的来源,这里,苏南大叔,设置为从本地上传。

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 06_设置本地提交信息
如何推送docker镜像到阿里云的docker仓库服务?(图10-7)

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 07_设置本地提交信息
如何推送docker镜像到阿里云的docker仓库服务?(图10-8)

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 08_设置完成
如何推送docker镜像到阿里云的docker仓库服务?(图10-9)

登陆到阿里云仓库

在存有镜像的docker测试机上,苏南大叔先使用docker login登陆到阿里云的镜像服务器,并且输入仓库的密码。

sudo docker login --username=<用户名邮箱> registry.cn-hangzhou.aliyuncs.com

其中的<用户名邮箱>,是阿里云上的邮箱地址。得到的回显信息如下:

Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

这里提及了一个本地目录路径/root/.docker/config.json。大家暂时先记下即可。

docker镜像改名

对于实验用的镜像,苏南大叔选好一个镜像,id为:db06e6d5ab99,而设置的阿里云的镜像名为:sunan/test。那么本地的镜像可以使用下面的命令,进行改名。

docker tag <image_id> registry.cn-hangzhou.aliyuncs.com/<name>:<tag>

这个镜像的nametag,就被设置好了。

通过docker images可以看到本地的镜像列表,原有的镜像记录还存在,新的镜像记录也存在。两者拥有着同样的image id

docker images
REPOSITORY                                         TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:5000/test1                               0.1                 db06e6d5ab99        21 hours ago        132MB
registry.cn-hangzhou.aliyuncs.com/sunan/test       0.11                db06e6d5ab99        21 hours ago        132MB

提交镜像到阿里云仓库

提交阿里云仓库镜像的关键就是:

  • 先是docker login到阿里云仓库
  • 镜像的名字里面,设置好了仓库基地址registry.cn-hangzhou.aliyuncs.com
docker push registry.cn-hangzhou.aliyuncs.com/<name>:<tag>

进度条走完后,就算docker push完毕了。

拉取阿里云docker镜像

拉取的命令,就很简单了,以前已经多次说过了。命令的顺利使用前提,还是docker login。这里就不详细描述了。如果docker login操作失败的话,就当然不会pull成功了。

docker pull registry.cn-hangzhou.aliyuncs.com/<name>:<tag>

例如:

docker pull registry.cn-hangzhou.aliyuncs.com/sunan/test:0.11

这里可能用的到docker退出登陆命令如下:

docker logout registry.cn-hangzhou.aliyuncs.com

退出登陆之后,再pull就可以看到出错信息。

docker pull registry.cn-hangzhou.aliyuncs.com/sunan/test:0.11
Error response from daemon: pull access denied for registry.cn-hangzhou.aliyuncs.com/sunan/test, repository does not exist or may require 'docker login'

查找公开镜像

docker push之后,这个镜像就存放在阿里云上面了,如果你设置为公开的话,还可以通过下面的链接,查看到相关信息。

  • https://dev.aliyun.com/list.html?namePrefix=<关键词>

苏南大叔:如何推送docker镜像到阿里云的docker仓库服务? - 09_查看公开信息
如何推送docker镜像到阿里云的docker仓库服务?(图10-10)

总结

使用阿里云的镜像服务的好处,就是简单安全可分享。如果您觉得苏南大叔的这篇如何使用aliyun的docker服务的教程,写的还不错的话,欢迎打赏转载本文章。谢谢。

更多docker精彩好文,请点击这里查看。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   docker