如何设置充当代理的dockerregistry?
我有一个服务器(让我们将其命名为A),它可以访问互联网,从中可以从officiel docker.ioregistry中提取图像。
我也有其他的服务器(B,C)出于安全原因不能拥有同样的访问权限,但是允许访问A.
我也决定在A上安装一个私有的registry,可以从B和C中使用。
有没有可能让这个registry充当代理,当我想从B中拉出官方图像时,可以通过A来完成?
同时这可能:
https://blog.docker.com/2015/10/registry-proxy-cache-docker-open-source/
https://docs.docker.com/registry/recipes/mirror/
但是不支持推送到这样的registry:
步骤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.yml
registry:
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 。