本篇来介绍如何搭建自己的Docker registry,用来存储和分发自己私人的镜像文件。前面一篇使用docker push默认是发布镜像到hub.docker.com这个公有的镜像站点,这篇主要介绍私有镜像站点的在本地的搭建过程。
前面我们只准备了一台linux虚拟机用来练习和学习Docker,一般情况需要再使用一台机器作为私有仓库使用,这里我们使用同一台机器。
拉取docker registry镜像
我们先启动docker服务,然后使用docKer pull registry拉取一个镜像到本地。
看看这个镜像多大
启动registry
启动registry实际上就是启动一个容器,这个registry其实和hub.docker.com是一样的功能,只不过这个私有的registry是供给公司内部使用,不对外访问罢了。使用下面的命令就启动了registry服务(运行在一个容器中)。
# docker run -d -p 5000:5000 --restart always --name registry registry:latest
上面可以看到两个端口都是5000,简单说一下,一个是linux虚拟机也就是0.0.0.0:5000,这个5000是这个虚拟机本身的端口,第二个是5000是这个registry容器里的端口是5000.。容器的名称叫registry,使用的image是registry:latest
发布镜像到私有registry
1) 我的机器上有个centos6.8的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库
# docker tag centos:6.8 127.0.0.1:5000/centos68
2) 接下来,我们运行docker push
将centos:6.8镜像push到我们的私有仓库中
3) 现在我们可以查看我们本地某个目录下已经有了刚推送上来的centos。我们也在浏览器中输入http://192.168.66.152:5000/v2/_catalog,正常返回如下数据
4) 现在我们可以先将我们本地的docker rmi 127.0.0.1:5000/centos68和docker rm centos:6.8先删除掉
5) 然后使用docker pull从我们的私有仓库中获取hello-world镜像
6) 问题来了,push到registry的镜像在哪呢?
我通过find找到了
为了防止默认的存放,在搭建的时候需要注意下:
Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。
docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。