- A+
本章将和大家分享Docker仓库之Registry私有镜像仓库的搭建与使用。废话不多说,下面我们直接进入主题。
一、官方标配:Registry私有镜像仓库
Docker Hub作为Docker默认官方公共镜像仓库,如果想要自己搭建私有镜像仓库,官方也提供了Registry镜像,使得我们搭建私有仓库变得非常简单。
所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。
下面就是详细的基于Registry搭建私有仓库的步骤,首先我们准备了两台Linux服务器,他们的角色如下:
主机名 | 角色 | 备注 |
192.168.4.250 | registry-server | 部署registry容器 |
192.168.4.251 | registry-consumer | 从registry服务器上下载镜像使用 |
二、搭建镜像仓库
1、拉取私有仓库(registry)镜像
docker pull registry
2、创建并启动一个私有仓库(registry)容器
docker run -d -v /opt/images/registry:/var/lib/registry -p 5000:5000 --restart=always --name tianya-registry registry
此处的反斜杠 “” 在Linux中表示换行的意思。
3、测试私有仓库
在浏览器中输入http://<your-server-ip>:5000/v2/_catalog,将<your-server-ip>替换为你的服务器IP地址,如果能够正常访问,说明私有仓库搭建成功。
也可以在客户端查看私有镜像仓库中的所有镜像:
curl http://<your-server-ip>:5000/v2/_catalog
这里返回的json数据代表仓库中暂无镜像,因为我们还没有上传任何镜像。
三、上传镜像到私有仓库
1、配置私有仓库的可信任设置
首先,为了让客户端服务器能够快速地访问刚刚在服务端搭建的镜像仓库(默认情况下是需要配置HTTPS证书的),这里简单在客户端配置一下私有仓库的可信任设置让我们可以通过HTTP直接访问。
vim /etc/docker/daemon.json
加上下面这一句,这里的“your-server-ip”请替换为你的服务器外网IP地址:
{ "insecure-registries": [ "your-server-ip:5000" ] }
示例:
保存成功后,重新加载配置并重启Docker服务:
sudo systemctl daemon-reload sudo systemctl restart docker
2、标记镜像
docker tag <image-id> <your-server-ip>:5000/<image-name>:<image-version> 或 docker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname
其中将<image-id>替换为你要上传的镜像的ID,<your-server-ip>替换为你的服务器IP地址,<image-name>和<image-version>分别替换为镜像的名称和版本号(标签名)。
示例:
docker tag nginx:latest 192.168.4.250:5000/nginx:v1 或 docker tag 39286ab8a5e1 192.168.4.250:5000/nginx:v1
3、推送镜像到私有仓库
docker push <your-registry-server-ip>:5000/<your-image-name>:<tagname>
示例:
docker push 192.168.4.250:5000/nginx:v1
推送完成后,可以查看一下是否有真正的推送成功:
也可以在客户端查看私有镜像仓库中的所有镜像:
curl http://<your-server-ip>:5000/v2/_catalog
可以看到,推送成功了。
四、从私有仓库拉取镜像
1、配置私有仓库的可信任设置
同样的,需要从私有仓库拉取镜像的客户端也需要配置私有仓库的可信任设置:
vim /etc/docker/daemon.json
加上下面这一句,这里的“your-server-ip”请替换为你的服务器外网IP地址:
{ "insecure-registries": [ "your-server-ip:5000" ] }
示例:
保存成功后,重新加载配置并重启Docker服务:
sudo systemctl daemon-reload sudo systemctl restart docker
2、拉取私有仓库中的镜像
docker pull <your-server-ip>:5000/<your-image-name>:<tagname>
示例:
docker pull 192.168.4.250:5000/nginx:v1
可以发现拉取成功了。
3、查看私有仓库中的镜像都有哪些版本(tag)
如果想要知道要下载的镜像都有哪些版本(tag),可以通过下面这个api来获取:
curl http://<your-server-ip>:5000/v2/<your-image-name>/tags/list
示例:
curl http://192.168.4.250:5000/v2/nginx/tags/list
至此本文就全部介绍完了,如果觉得对您有所启发请记得点个赞哦!!!
此文由博主精心撰写转载请保留此原文链接:https://www.cnblogs.com/xyh9039/p/18509420
版权声明:如有雷同纯属巧合,如有侵权请及时联系本人修改,谢谢!!!