如何设置充当代理的docker注册表?

Ora*_*bîg 3 docker docker-registry

我有一个服务器(让我们命名为A)可以访问互联网,我可以从officiel docker.io注册表中提取图像.

我还有其他服务器(B,C)出于安全原因不能进行相同的访问,但是可以访问A.

我还决定在A上安装一个私有注册表,可以在B和C中使用.

是否有可能让这个注册表充当代理,当我想从B中提取官方图像时,它可以通过A完成?

Jif*_*ang 8

步骤1:使用代理配置运行注册表版本2+

您需要使用代理配置运行docker注册表.

获得一个初始config.yml:

docker run -it --rm --entrypoint cat registry:2 /etc/docker/registry/config.yml > `pwd`/config.yml
Run Code Online (Sandbox Code Playgroud)

添加以下内容config.yml:

proxy:
      remoteurl: https://registry-1.docker.io
Run Code Online (Sandbox Code Playgroud)

然后启动docker注册表config.yml:

docker run -d --restart=always -p 5000:5000 --name docker-registry-proxy -v `pwd`/config.yml:/etc/docker/registry/config.yml registry:2
Run Code Online (Sandbox Code Playgroud)

第2步:在客户端上配置Docker守护程序

如果你使用Docker for Mac(不是Docker工具箱或boot2docker),只需添加http://<proxy-ip>:5000到高级选项卡下的镜像部分: 在此输入图像描述

重启Docker for Mac.

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

docker --registry-mirror=https://<my-docker-mirror-host> daemon
Run Code Online (Sandbox Code Playgroud)

第3步:验证代理是否正常工作:

尝试拉出你还没有的图像:

docker pull nginx
Run Code Online (Sandbox Code Playgroud)

然后验证代理目录是否具有新映像:

curl https://<proxy_ip>:5000/v2/_catalog
Run Code Online (Sandbox Code Playgroud)

它应该返回一些东西,包括刚刚拉出的图像.

"repositories":["library/nginx"]}
Run Code Online (Sandbox Code Playgroud)