Lunix系统下(Ubuntu)docker搭建基于局域网的私有仓库
在docker实际开发应用中,使用公共docker仓库如(Docker Hub)有不太方便;于是自己开始研究搭建基于局域网的docker仓库;
相比于公共仓库而言其优势如下:
1.公共仓库占用网络资源大,一旦网络带宽有限镜像的上传(push)和下载(pull)收到比较大的影响,局域网的私有仓库没有该限制;
2.必须依赖公共网络(外网),而局域网中的私有仓库不受该限制;
环境准备:
两台装有docker的Ubuntu系统环境
虚拟机一:10.10.181.108 用作私有仓库。docker版本:Docker version 18.09.7, build 2d0083d
主机二(非虚拟机):10.10.181.229 普通用户机;docker版本:Docker version 19.03.1, build 74b1e89e8a
搭建:
1、私有仓库是基于registry镜像简单制作的。首先下载registry镜像
[email protected]:/data/registry$ sudo docker pull registry
[email protected]:~$ sudo docker images | grep registry
2.创建修改私有仓库的路径(本地)
默认情况下,会将仓库放在容器内的/data/registry目录下,这样有个问题,如果容器被删除,则存放在容器中的镜像也会丢失。所以一般情况下建议指定本地一个目录挂载到容器内的/data/registry下(新版本是/var/lib/registry)
[email protected]:~$ sudo docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always registry
查看容器的启动状态: docker ps -a
Up表明已已启动成功!
3.在向私有镜像push 镜像时,与docker registry交互默认使用的是https,此处只是http服务,因此需要在修改docker的配置文件,修改有两种办法。一种是修改新版docker下的vim /lib/systemd/system/docker.service 文件。--insecure-registry 10.10.181.108:5000 如下:
6.服务已经开启,正式push镜像。
docker tag gz_time 10.10.181.108:5000/gz_time
docker push 10.10.181.108:5000/gz_time
7、查看私有仓库的所有镜像:
[email protected]:/data/registry/docker# curl 10.10.181.108:5000/v2/_catalog
8.客户端下载该镜像前,首先修改docker配置文件,添加仓库地址,添加的方法跟上面10.10.181.108的方法相同。仓库地址指向10.10.181.108即可;如
9、从私有仓库中下载已有的镜像:客户端操作:10.10.181.229
[email protected]:/data/registry# docker pull 10.10.181.108:5000/gz_time
[email protected]:/data/registry# docker images | grep gz_time
参考:https://blog.****.net/qq_41547105/article/details/104392352