按照 nexus 设置,已经配置了 docker proxy 类型的代理,分别指向 dockerhub ,ghcr ,mcr 等 docker 源。同时配置 docker group 类型代理,将前面 3 个地址纳入 member 管理。
然后在 docker client 的 /etc/docker/daemon.json 配置 registry-mirrors 指向 nexus 所在机器的 docker group 地址。
现在发现,直接用 docker pull nginxproxy/nginx-proxy:1.7.0-alpine 可以拉取到 dockerhub 的镜像,并且在 nexus 缓存。但是,如果拉 ghcr 或 mcr 专有的镜像,则会提示失败,但是拉取镜像前面加上 nexus 的地址则可以成功,类似 docker pull 192.168.100.100:8080/nginxproxy/nginx-proxy:1.7.0-alpine ,假设 192.168.100.100 是 docker group 代理的地址。
失败提示: Error response from daemon: pull access denied for devcontainers/base, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
按照我的理解,既然已经在 daemon.json 设置了 mirros ,则所有原生不加地址前缀的 docker 请求都会被发往 nexus docker group 端口,看上去像 nexus 无法处理这种非 dockerhub 镜像的请求(已经尝试登录 dockerhub 外的私有站点,仍然无效)。