私有Docker Registry部署

今天,我打算写一篇纪录文章来分享。

Docker Registry 到底是干什么用的?

答:白话说就是可以让你的镜像在任意的服务器去使用,从而达到一方构建多方使用。这点在集群里就可以体现的很明白。

工具准备

一台 linux系统 的机器,我这篇文章就用 centos7

还有你已经安装 docker 了。

我的docker版本是 :

docker 部署postgre 集群 docker registry部署_docker registry


接下来就进入安装之旅了。。

安装1

其实安装Docker Registry就是在构建一个register 容器。

命令其实就一条。(当然我这块不会使用证书去搭建了)

docker run -d -v /home/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest

这其中的命令解释我们一个一个来分析一下:

docker run	 		运行一个容器。

-d 					以守护进程的模式运行容器。

-v  [宿主机的目录(自定义)]:[容器的目录(/var/lib/registry)] 	挂载容器中的目录到宿主机上一个目录。

-p  [宿主机的端口(自定义)] :[容器的端口(5000)]				映射容器的端口到宿主机上。

--restart=[no,on-failure,always]					 		退出容器时是否重启或者可以指定重启次数
		no 			 	默认值 退出容器时,不 自动重启容器
		on-failure:2  	退出容器时,容器重启,如果失败则总共重启2次。若还未重启成功则放弃。
		always 			只要退出容器,则重启。
		
--privileged=true  	表示容器内root用户是的拥有超级权限,如果为false则只拥有普通用户权限

--name registry		指定容器名称为 registry

 registry:latest 	拉取最后一个版本的registry

运行过程大概就是这样:

docker 部署postgre 集群 docker registry部署_docker registry_02

现在 registry 已经搭建好了,可以用下面的命令来查看 registry 日志

docker logs registry

docker 部署postgre 集群 docker registry部署_docker registry_03


上图中有个 warning ,前面提过我就不用证书搭建。

测试

1.1 推送镜像

我们现在测试推送一下镜像。

1.先查看或者构建我们要推送的镜像,这里我已经构建过一个镜像了。

查看镜像

docker image ls

然后给我们要推送的镜像用 tag 修改标签。

docker tag redis [服务器ip地址]:5000/redis

接下来我们就应该推送镜像到 registry

docker push [服务器ip地址]:5000/redis

结果就是报错了。

Error response from daemon: Get https://[服务器ip地址]:5000/v2/: http: server gave HTTP response to HTTPS client

这是因为我们没有用证书去部署。没关系,我们只需一条命令变解决。。

echo '{ "insecure-registries":["服务器ip地址:5000"] }' > /etc/docker/daemon.json

这条命令就是 给私有仓库添加一个不安全的注册地址

重启 docker 服务

systemctl restart docker

然后继续执行上面的推送命令,发现成功了。

1.2 拉取镜像

现在就可以在随便一个装有docker的服务器拉取镜像了
当然来去镜像仍然会有一个问题就是证书问题。那我们还是执行上面的 私有仓库添加一个不安全的注册地址 也不要忘记重启哦!

docker pull 49.232.0.34:5000/redis

OK这样就搭建和拉取完成我们自己的私有仓库的镜像了。

2.1 删除私有仓库的镜像

这里写一个不是官方提供的删除方法,但是比官方的快而且简单的方法。。

一、删除repositories
docker exec 《容器名》 rm -rf /var/lib/registry/docker/registry/v2/repositories/<镜像名>
二、使用垃圾回收命令,回收镜像名称
docker exec 《容器名》  bin/registry garbage-collect /etc/docker/registry/config.yml

上述纯属个人总结,如有问题还望指教~
我发现写一篇博客真麻烦,本来我几分钟就搞完的事。。。加油吧!