如何设置充当代理的dockerregistry?

我有一个服务器(让我们将其命名为A),它可以访问互联网,从中可以从officiel docker.ioregistry中提取图像。

我也有其他的服务器(B,C)出于安全原因不能拥有同样的访问权限,但是允许访问A.

我也决定在A上安装一个私有的registry,可以从B和C中使用。

有没有可能让这个registry充当代理,当我想从B中拉出官方图像时,可以通过A来完成?

步骤1:使用代理configuration运行registry版本2+

您需要使用代理configuration运行dockerregistry。

得到一个初始的config.yml

 docker run -it --rm --entrypoint cat registry:2 /etc/docker/registry/config.yml > `pwd`/config.yml 

将以下内容添加到config.yml

 proxy: remoteurl: https://registry-1.docker.io 

然后用config.yml启动config.ymlregistry:

 docker run -d --restart=always -p 5000:5000 --name docker-registry-proxy -v `pwd`/config.yml:/etc/docker/registry/config.yml registry:2 

第二步:在客户端configurationDocker守护进程

如果您使用Docker for Mac(不是Docker工具箱或boot2docker),只需将http://<proxy-ip>:5000到高级选项卡下的镜像部分: 在这里输入图像说明

重新启动Mac的Docker。

否则,您需要通过在客户端或Docker Toolbox VM上执行以下操作,使用--registry-mirror=http://<proxy_ip>:5000运行--registry-mirror=http://<proxy_ip>:5000守护进程:

 docker --registry-mirror=https://<my-docker-mirror-host> daemon 

第3步:validation代理正在工作:

尝试拉一个你还没有的图像:

 docker pull nginx 

然后validation代理目录是否有新的映像:

 curl https://<proxy_ip>:5000/v2/_catalog 

它应该返回一些东西,包括你刚才拉的图像。

 "repositories":["library/nginx"]} 

这就是所谓的直通式caching镜像,不幸的是它还不被支持。 这是一个正在进行中的工作! 见docker/发行#19 。