docker本地仓库-registry

Docker本地私有仓库实战:
docker仓库主要用于存放docker镜像,docker仓库分为公有仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下:
  1. 节省网络带宽,针对每个镜像不用去docker官网仓库下载;
  2. 下载docker镜像从本地私有仓库中下载;
  3. 组件公司内部私有仓库,方便各部门使用,服务器管理更加统一;
  4. 可以基于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'


原文地址:https://www.cnblogs.com/fengyuanfei/p/13798577.html