私有Docker Registry部署
今天,我打算写一篇纪录文章来分享。
Docker Registry 到底是干什么用的?
答:白话说就是可以让你的镜像在任意的服务器去使用,从而达到一方构建多方使用。这点在集群里就可以体现的很明白。
工具准备
一台 linux系统 的机器,我这篇文章就用 centos7 了
还有你已经安装 docker 了。
我的docker版本是 :
接下来就进入安装之旅了。。
安装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
运行过程大概就是这样:
现在 registry 已经搭建好了,可以用下面的命令来查看 registry 日志
docker logs registry
上图中有个 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
上述纯属个人总结,如有问题还望指教~
我发现写一篇博客真麻烦,本来我几分钟就搞完的事。。。加油吧!