到目前为止,我们已经掌握了Docker大部分的基础知识了。包括从dockerFile→image→container的过程,以及image本质上是一个类似俄罗斯套娃一样的UnionFS系统等等......而最后一章,笔者会介绍如何以阿里云为仓库,将你本地的image提交上去,以便在合适的时机中将它迁移到你的开发环境/部署环境中。
至此,有关Docker的学习将告一段落。如果有时间和精力,笔者很愿意在后续的学习中继续探索有关Jenkins内容,并配合Docker swarm实现真正的持续集成与持续交付。
Docker push命令
国内除了大公司拥有独立的Docker Registry之外,个人或者小企业一般使用阿里云就足够用了。我们在之前介绍了docker pull / commit,在这小节亲自体验一次Docker push命令,将本地的镜像提交到远程仓库中。
顺便回顾一下commit命令:
$ docker commit -a ${author} -m ${msg} ${containerID} ${imageName}[:${label}]
和GitHub的使用方式一样,在本地commit之后,便可以将这个image上传到阿里云当中保存下来了。
我们需要登录阿里云开发者平台:
然后填写两个表单即可。第一个表单:仓库信息包含了服务器选择,命名空间,仓库名称,摘要,描述信息等内容。
其中,命名空间一般填写为个人用户名字,或者是公司名,如Alibaba,Obama。仓库名称一般对应具体的项目名,如catApp。为了让人能够了解镜像的内容,摘要也同样是必填项。
第二个表单:代码源包含了多种渠道,由于我们的镜像来自于本地的虚拟机,因此选择本地仓库。
全部填写完毕之后,控制台就会显示新创建好的Docker仓库了。注意,一个仓库保存一个镜像,一个仓库下保存着同一个镜像的不同版本。
登录阿里云Docker Registry
$ sudo docker login --username=${你的阿里云账号名} ${你的阿里云仓库地址}
用于登录的用户名为阿里云账号全名,在机器中第一次执行login命令会提示输入密码。密码为开通服务时设置的密码。可以在访问凭证页面修改凭证密码。
从Registry中拉取镜像
$ sudo docker pull ${你的阿里云仓库地址}:${云端对应版本号}
将镜像推送到Registry
#通过命令行方式登录到服务器中
$ sudo docker login --username=${你的阿里云账号名} ${你的服务器地址}
#这个版本号是设置此镜像在阿里云服务器的版本号。这两个版本号不一定是对应的,因此要重新设置。
$ sudo docker tag ${镜像id} ${你的阿里云仓库地址}:${云端对应版本号}
#这个命令真正将本地的镜像提交到远端。
$ sudo docker push ${你的阿里云仓库地址}:${云端对应版本号}
注:镜像id和版本号需要自己自行设计。另外,可以在阿里云仓库中通过命名空间/仓库名
搜索上传到云端的镜像。点此链接