Docker Hub远程镜像管理
Docker Hub是一个基于云计算的注册服务,它允许连接到开发者的代码库、管理镜像和创建测试组,并且支持连接到Docker Cloud云服务平台进行主机镜像部署。可以说他为开发过程中的镜像、容器管理、用户和团队协作以及工作流自动化提供了集中式资源管理。
1.登录Docker Hub
要使用Docker Hub就需要先在其官网https://hub.docker.com/
注册一个账号(需要用户名、邮箱和密码),通过邮件认证后,即可登录到Docker Hub中心,如图1所示主界面。
图1 Docker Hub主界面
从图1可以看出,Docker Hub提供了创建镜像仓库、创建组织等多种功能,例如通过Create Repository(创建仓库)链接可以创建Docker Hub上的远程仓库;通过Create Organization(创建组织)链接可以创建用于镜像开发的团队;通过Explore Repositories(搜索仓库)可以搜索Docker提供的官方仓库和其他开发者提供的公开仓库。
需要注意的是,Docker Hub的仓库分为Public(公开)和Private(私有)两种,公开仓库可以被其他开发者查看和拉取资源;而私有仓库不对外公开,只对内部创建组织的成员公开。Docker Hub为免费用户只提供了一个私有仓库,如果需要使用更多的私有仓库,则可以单击上图中的“Get more”链接通过付费的方式进行获取。
Docker Hub功能强大,并非只提供了上述3种简单的功能,还有其他一些功能,具体如下。
● 镜像管理:可以从社区或官方搜索、拉取、管理、推送镜像等。
● 自动构建镜像:Docker Hub支持连接到源代码仓库,如GitHub和Bitbucket,当源代码进行修改后可以进行自动化构建镜像。
● Webhooks(监测工具):属于自动构建的一个特性,Webhooks能够让开发者成功推送仓库后触发一些行为。
● Organizations(组织):可以创建工作组,来协同开发、管理一个镜像仓库。
● GitHub和Bitbucket集成:支持集成代码仓库GitHub和Bitbucket到工作流中。
2.修改镜像名称
当有了Docker Hub账号后,就可以将本地创建的镜像推送到远程Docker Hub仓库进行保存了。这里先使用docker images命令查看下本地镜像,显示结果如图2所示。
图2 镜像列表
从图2可以看出,本地有6个镜像,分别为REPOSITORY、hellodocker、ubuntu、ubuntu、python、hello-world。如果我们要将名为hellodocker的镜像推送到远程仓库,该镜像名就必须符合DockerID/repository的形式规范,其中DockerID为Docker Hub上的账号名,repository为镜像名。由于现在hellodocker镜像不符合远程仓库的名称规范,因此需要按照要求修改镜像名称,具体操作指令如下(这里假设刚才创建的Docker Hub账号名为itheima)。
$ docker tag hellodocker:latest itheima/hellodocker:latest
使用上述指令后,会在本地复制一份名称为itheima/hellodocker的镜像,而原名称hellodocker的镜像不变,再用docker images指令查看,显示结果如图3所示。
图3 列出本地镜像
3.登录认证
想要通过客户端推送镜像到远程仓库必须先登录认证,具体操作指令如下。
$ docker login
执行上述指令后,会要求输入Username和Password进行认证登录,认证成功后就会返回有Login Succeeded的消息,具体效果如图4所示。
图4 终端登录Docker Hub
4.推送镜像
我们可以在客户端使用Docker push指令向远程仓库推送镜像,具体使用方式如下。
$ docker push itheima/hellodocker:latest
完成后就可以在Docker Hub上进行查看了,具体如图5所示。
图5 镜像推送结果图
从图5可以看出,名称为itheima/hellodocker的镜像已经推送成功。
Docker Hub会定时对上传的公开镜像仓库进行索引,而itheima/hellodocker镜像仓库就是公开的,所以在一定时间后,任何人员都可以搜索到该公开镜像仓库。
小提示:
如果想要将推送的镜像仓库设置为私有的,有两种方式:第一种方式就是推送完成后立即进入Docker Hub仓库面板,进入对应仓库详情中的Settings菜单/功能下,单击“Make Private”按钮设置为私有仓库;另一种方式就是在推送镜像之前,先在Docker Hub上通过Create Repository(创建仓库)链接创建一个私有仓库,然后再以该私有仓库为名重命名一个本地镜像,推送到该指定私有仓库上。