在《Docker镜像管理(一)》中介绍了使用Docker Hub来管理你的Docker镜像,小伙伴们在创建仓库时,细心的同学可能已经发现再次创建private类型的仓库时,不能创建了,如下图:
从上图中可以看出,Private单选钮变成灰色,虽然Create按钮能点击,但怎么也创建不了仓库了。Public单选钮上面多了一行红色的字:Using 1 of 1 private repositories. Get more
这说明免费的午餐吃完了!点击Get more后发现Docker Hub的私有仓库只能免费建一个,再次需要收费了!!不差钱的小伙伴可以购买。
本文简述另一种管理Docker镜像的方法:通过Docker registry2.0建立自己的私有仓库。该仓库是一个无状态、高可用、可扩展的服务器端应用程序,存储并能分发Docker镜像。有如下的好处:
1. 可以严格控制镜像的存储位置
2. 完全拥有镜像分发渠道
3. 可将镜像存储和分发紧密集成到内部开发工作流中
Docker Registry 2.0已经可以满足大部分开发需求,尽管它不包含界面、用户管理、权限控制等功能。如果想要更好的功能,可使用Docker Trusted Registry(DTR)。DTR是一种商业产品,它支持完整的镜像管理工作流,具有LDAP集成、镜像签名、安全扫描以及与通用控制平面的集成。
本文将以Docker Registry 2.0为例,简述其镜像管理方法。
安装要求
Docker Engine 1.6.0或更高版本
搭建Registry
docker run -d -p 5000:5000 --restart=always --name registry registry:2
从下图可以看出,Registry作为一个Docker容器在运行了,并提供管理镜像的服务。
重命名镜像
本地镜像可以是自己构建的镜像也可以是从Docker Hub中拉取的镜像。推送镜像(即将本地镜像发布到上述建立的镜像仓库registry中)前,需要给镜像打下Tag。执行如下Docker命令:
docker tag szroy/my-test-repo:v0.0.1 localhost:5000/szroy/my-test-repo1
推送镜像
执行如下Docker命令:
docker push localhost:5000/szroy/my-test-repo1
拉取镜像
为了验证拉取镜像,先将本地镜像删除后,再拉取。执行如下命令:
docker pull localhost:5000/szroy/my-test-repo1
或从另外一台装有Docker的机器上拉取镜像,执行如下命令:
docker pull localhost:5000/szroy/my-test-repo1
注意:需将上述命令中localhost要用registry所在的服务器的IP地址代替。