Docker本地私有仓库实战:
docker仓库主要用于存放docker镜像,docker仓库分为公有仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下:
- 节省网络带宽,针对每个镜像不用去docker官网仓库下载;
- 下载docker镜像从本地私有仓库中下载;
- 组件公司内部私有仓库,方便各部门使用,服务器管理更加统一;
- 可以基于GIT或者SVN、Jenkins更新本地docker私有仓库镜像版本。
官方提供docker registry来构建本地私有仓库,目前最新版本为v2,最新版的docker已不再支持v1,registry v2使用go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。
以下为创建docker本机私有仓库的方法:(本地私有仓库需要另一台机器部署,专门存放镜像)
docker 本地私有仓库 192.168.1.26 (前2步骤)
docker 宿主机 192.168.1.20 (后3步骤)
1)下载docker registry 镜像
docker pull docker.io/registry
2)启动私有仓库容器,启动命令如下: 默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一遍情况下会指定本地一个目录挂载到容器的/tmp/registry下。
mkdir -p /data/registry/
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
3)上传镜像至本地私有仓库:
客户端上传镜像至本地私有仓库,如下以centos7-ssh镜像为例,将busybox上传至私有仓库服务器。
docker pull docker.io/centos7-ssh docker tag centos7-ssh 192.168.1.26:5000/centos7-ssh docker push 192.168.1.26:5000/centos7-ssh
上图所示:表示没有上传成功, 默认找https了,而我们不是https, 是http:需要在客户端:/etc/docker/daemon.json文件中写入如下内容:(重启docker 引擎服务)
{ "insecure-registries":["192.168.1.26:5000"] }
再次测试:docker push 192.168.1.26:5000/centos7-ssh
从本地私有仓库下载镜像:docker pull 192.168.1.26:5000/centos7-ssh发现非常快:
4)检测本地私有仓库:
curl -XGET http://192.168.1.26:5000/v2/_catalog
curl -XGET http://192.168.1.26:5000/v2/busybox/tags/list
5)客户端使用本地私有仓库:
客户端docker配置文件添加如下代码,同时重启docker服务,获取本地私有仓库:
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.0.123:5000' ADD_REGISTRY='--add-registry 192.168.1.26:5000'