如何推送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 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=<关键词>
总结
使用阿里云的镜像服务的好处,就是简单安全可分享。如果您觉得苏南大叔的这篇如何使用aliyun的docker服务的教程,写的还不错的话,欢迎打赏转载本文章。谢谢。
更多docker精彩好文,请点击这里查看。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。