Docker的那些事儿—镜像的存储:私有仓库(16)


上一篇:Docker的那些事儿—镜像的存储:公有仓库(15)


我们可以使用Docker官方提供了registry镜像搭建本地私有仓库。该镜像的使用和普通镜像无差异。下面我以两台docker host为例来讲解如何搭建:

前提条件:已安装docker

Ubuntu-001 用作私有仓库机器

Ubuntu-002 用作客户机器

1、Pull registry到本地

root@Ubuntu-001:~# docker pull registry

Docker的那些事儿—镜像的存储:私有仓库(16)_第1张图片

2、启动该镜像

root@Ubuntu-001:~# docker run -d -p 5000:5000 registry

默认情况下,仓库存将存放于容器内的/tmp/registry目录下,假如容器被删除,则存放于容器中的镜像也会丢失,因此我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:

root@Ubuntu-001:~#docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

至此,私有仓库搭建完毕,我们可以看一下搭建的私有仓库能否使用

容器已经运行起来了,并且在宿主机上观察实际上是起了一个进程。

下面我们进验证能否push镜像到刚才搭建的私有仓库。

接下来需要在Ubuntu-002上操作

3、修改镜像的tag

Docker的那些事儿—镜像的存储:私有仓库(16)_第2张图片

4、将ubuntu及httpd镜像push到仓库

报错了,这是因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。

为了解决这个问题:在启动docker server时,增加启动参数为默认使用http访问。增加insecure-registries 192.168.1.114:5000到docker启动配置文件/etc/docker/daemon.json中(注意该文件是json格式),并重启docker daemon: systemctl restart

docker.service,如下所示:

如果有多个仓库可以添加多个: "insecure-registries":["192.168.1.114:5000","192.168.1.115:5000"]

Docker的那些事儿—镜像的存储:私有仓库(16)_第3张图片
Docker的那些事儿—镜像的存储:私有仓库(16)_第4张图片

可见push成功了。

你可能看到为啥第一次push ubuntu镜像的时候,latest和14.04均push了,这是因为:docker push 10.140.160.250:5000/ubuntu是push REPOSITORY为10.140.160.250:5000/ubuntu里的所有images到仓库。

Docker的那些事儿—镜像的存储:私有仓库(16)_第5张图片

5、验证从仓库pull镜像

Docker的那些事儿—镜像的存储:私有仓库(16)_第6张图片

私有仓库镜像操作:

1、验证仓库是否正常工作

2、列出当前所有的镜像

3、搜索指定镜像

有兴趣的读者可以探讨下如下的问题:

1、Push到私有仓库的镜像怎么删除?目前好像还比较麻烦,只能通过接口删除

2、如何创建支持https的私有仓库?

3、私有仓库可以像Docker Hub一样注册用户,便于管理?不然的话谁都可以push镜像岂不乱套了。



下一篇:Docker的那些事儿—镜像管理(17)


Docker的那些事儿—镜像的存储:私有仓库(16)_第7张图片

你可能感兴趣的:(Docker的那些事儿—镜像的存储:私有仓库(16))