如何设置 docker 注册表作为代理?

2023-12-31

我有一台服务器(我们将其命名为 A),它可以访问互联网,并且我可以从该服务器从官方 docker.io 注册表中提取图像。

我还有其他服务器(B、C),出于安全原因,它们不能具有相同的访问权限,但允许访问 A。

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

是否可以让这个注册表充当代理,这样当我想从 B 提取官方映像时,可以通过 A 来完成?


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

你需要运行 dockerregistryproxy https://docs.docker.com/registry/configuration/#proxy配置。

为了得到一个初始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

然后启动 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

Step2:在客户端配置Docker Daemon

If you use Docker for Mac (not Docker toolbox or boot2docker), just add http://<proxy-ip>:5000 to mirrors section under Advanced tab: enter image description here

重新启动 Mac 版 Docker。

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

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

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

尝试拉取您还没有的图像:

docker pull nginx

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

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

它应该返回一些内容,包括您刚刚提取的图像。

"repositories":["library/nginx"]}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 docker 注册表作为代理? 的相关文章

随机推荐