今天,在设置 Harbor 的镜像仓库时出现了一个有趣的情况。Harbor 允许你为流行的镜像源(如 docker.io(码头工人)、ghcr.io、quay.io 和 gcr.io)创建代理仓库(proxy repository),解释一下“proxy repository”的含义,以确保读者理解。
问题是,它们只能作为独立的项目来设置,这意味着为了从ghcr.io拉取Alpine镜像到您的Harbor,你不能像之前那样操作。
下面的命令是用来从 ghcr.io/linuxcontainers/alpine 拉取最新的 Alpine 镜像:
docker pull ghcr.io/linuxcontainers/alpine:latest
你得做:
docker pull myharbor.org/ghcr-proxy/linuxcontainers/alpine:latest
从myharbor.org拉取最新的alpine镜像。(This command is used to pull the latest alpine image from the specified repository.)
换句话说,图像路径改变了,因此你不能在 Docker 的 registry mirrors 配置中指定 myharbor.org
。
{
"registry-mirrors": ["https://myharbor.org"]
}
解决方法其实很简单——在Nginx中设置覆盖配置,当你从特定子域下载资源时:
docker pull ghcr-proxy-myharbor.org/linuxcontainers/alpine:latest
```从ghcr-proxy-myharbor.org/linuxcontainers/alpine拉取最新镜像
实际上,镜像拉取来自哪里:
myharbor.org/ghcr-proxy/linuxcontainers/alpine:latest
这样,您可以在 Harbor 中为不同的项目配置多个镜像仓库。
{
"registry-mirrors": ["https://ghcr-proxy-myharbor.org", "https://docker-proxy-myharbor.org"]
}
图片将以透明方式自动通过它们被拉取,即使你运行相关命令。
```docker pull ghcr.io/linuxcontainers/alpine:latest``` 拉取最新版本的 alpine 镜像.
第一次尝试拉取图像将通过缓存Harbor。
事实上,这个问题已经存在了好几年了。在GitHub上有一个问题记录,爱好者们分享了现成的解决方案,这些解决方案可以让这件事完全自动完成。
这个配置对我没有任何问题:[这个配置](https://github.com/goharbor/harbor/issues/8082#issuecomment-2258660093)