Docker 搭建私有仓库repertory

前言

上一篇文章我们已经使用过公有仓库,现在我们学习一下如何搭建私有仓库。
私有仓库:顾名思义是私人使用或者公司内部使用的仓库。
搭建私有仓库可选择多种方案,常用的有两种repertory和harbor。
repertory是官方推荐使用的,没有可视化界面纯命令行管理。
harbor是VMware推出的,性能强悍,可视化界面操作方便。

一、搭建本地私有仓库(repertory)

1.docker push http 问题:

docker registry使用的是https传输协议,所以使用docker pull命令下载远程镜像时,docker registry没有使用https协议传输命令的时候就会报错误。

2.解决docker push http 问题:

根据自己的实际主机名添加 --insecure-registry 192.168.1.110:5000

[root@cgsl ~]# vi/etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.1.110:5000'

3.下载registry 镜像并且启动registry 容器

[root@cgsl ~]# docker run -d -p 5000:5000 --name registry --restart=on-failure:5 -v /opt/data/registry:/tmp/registry registry

4.创建成功了之后我们可以使用命令查看registry仓库里的镜像

注意:防火墙如果没有开启5000端口,肯定是无法查看的,查看为空是正常的,还没上传镜像到仓库了

[root@cgsl ~]# curl -X GET http://192.168.1.110:5000/v2/_catalog

5.上传镜像到registry仓库

首先修改镜像名

[root@cgsl ~]# docker tag centos 192.168.1.110:5000/centos

然后上传

[root@cgsl ~]# docker push 192.168.1.110:5000/centos

6.验证

[root@cgsl ~]# curl -X GET http://192.168.1.110:5000/v2/_catalog

7.删除仓库中的镜像

这个着重说一下,docker官方不建议直接删除镜像的层数据,所以没有接口直接删除镜像,删除镜像会很麻烦,一般如果需要删除某镜像我们只删除该镜像的元数据,也就是curl -X GET http://192.168.1.110:5000/v2/_catalog,查看到的镜像信息,而对于该镜像的镜像层数据需要进行垃圾回收才会真的被删除。如果删除的镜像与未删除的镜像公用了一些镜像层数据,垃圾回收之后,你就再也用不了这些镜像了。所以我们删除元数据就好。

8.进入到registry容器中

[root@cgsl ~]# docker ps -a
[root@cgsl ~]# docker exec -it  sh
/ # ls -l /var/lib/registry/docker/registry/v2/repositories/
/ # rm -rf /var/lib/registry/docker/registry/v2/repositories/<镜像名>

直接删除需要删除的本地仓库镜像

9.退出容器之后,再次查看

[root@cgsl ~]# curl -X GET http://192.168.1.110:5000/v2/_catalog

二、配置远程各机器

1.本地的私有仓库搭建好了,其他远程机器如何使用呢?

不用担心,确保运行私有仓库的宿主机开放5000端口之后,我们自有办法下载仓库中的镜像。

2.查看远程仓库的镜像

[root@cgsl ~]# curl -X GET http://192.168.1.110:5000/v2/_catalog

你所在的机器必须能够与192.168.1.110进行通信。

3.配置daemon.json,并重启docker服务

echo "{"insecure-registries":["192.168.1.110:5000"]}" >> /etc/docker/daemon.json
systemctl restart docker.service

4.可以愉快的下载

docker pull 192.168.1.110:5000/centos
Docker 搭建私有仓库repertory_第1张图片
u=3141540493,1060669034&fm=27&gp=0.jpg

你可能感兴趣的:(Docker 搭建私有仓库repertory)