如何推送docker镜像到阿里云的docker仓库服务?
发布于 作者:苏南大叔 来源:程序如此灵动~
本博客的热心读者都知道,如果苏南大叔使用了官方的registry这个docker镜像作为仓库服务的话,可能存在的不足之处是:并没有相关权限设定。也就是说,任何可以访问仓库地址的人,都有权限拉取镜像。所以,这种操作,可能限制了对权限控制比较严格的使用场景。
本文中,苏南大叔利用阿里云的docker镜像服务,添加各种权限限制,也比较方便更大范围内的镜像分享。最重要的是,这个也免费的。有阿里云账号就可以了。

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


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


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

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



登陆到阿里云仓库
在存有镜像的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>这个镜像的name和tag,就被设置好了。
通过docker images可以看到本地的镜像列表,原有的镜像记录还存在,新的镜像记录也存在。两者拥有着同样的image id。
docker imagesREPOSITORY 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=<关键词>

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