国内 Docker Hub 加速源对不同 namespace 覆盖差异 → 换 base image vendor 先验能拉
把后端 base image 从 eclipse-temurin:17-jre 换成 azul/zulu-openjdk:17-jre-headless,PR merge 后自动 deploy 直接挂在 docker build 拉 base image:
ERROR: failed to solve: azul/zulu-openjdk:17-jre-headless:
unexpected status from HEAD request to
https://docker.m.daocloud.io/v2/azul/zulu-openjdk/manifests/17-jre-headless?ns=docker.io: 403 Forbidden
目标机 Docker daemon 配的 DaoCloud 镜像源(docker.m.daocloud.io)不代理 azul/zulu-openjdk 命名空间,直接 403 Forbidden。已 revert 回 Temurin。
根因
国内 docker hub 加速源(DaoCloud / 网易 / 阿里 / 腾讯 / 七牛 / 中科大 / 上海交大 …)覆盖的 Docker Hub 镜像不是全集,而是按 namespace / popularity 各家选择性代理:
- 官方镜像(无 namespace 前缀,如
nginx/mysql/redis/eclipse-temurin) → 几乎所有加速源覆盖 - 主流 vendor namespace(
eclipse-temurin/*/library/*/ 常用 cncf 项目) → 多数覆盖 - 小众 / 商业 vendor namespace(
azul/*/bellsoft/*/ibmcom/*/ibmsemeru-runtimes/*…) → 看运气,DaoCloud 实测不代理azul,但eclipse-temurin可以
直接结果:选 base image 时”vendor 偏好” / “体积” / “性能” 都是次要,docker pull 拉得下来才是前提。换 vendor 前必须先在目标 docker daemon 上验证:
# 上目标机器跑一次试拉
docker pull <候选 vendor namespace>/<image>:<tag>
# 加速源 403 的话也可以直接 curl manifest 看
curl -I "https://docker.m.daocloud.io/v2/<namespace>/<image>/manifests/<tag>?ns=docker.io"
# 200 = OK,403 = 加速源不代理这 namespace,404 = tag 不存在反模式
- ❌ 只看 docker hub 上 image 是否存在,忽略国内加速源覆盖
- ❌ 看一次源站文档(“代理 docker.io”)就认为所有 namespace 都通——实测才算
- ❌ 把”绕开 DaoCloud 直连 docker hub” 当兜底——国内直连 docker hub 慢到无法部署,超时挂自动化 action
正确顺序
换 base image vendor 时:
- 先在目标 docker daemon 上
docker pull <候选>——不是开发机,是真正会拉这个 image 的部署机 - 拉得动再改 Dockerfile + PR
- 拉不动有几路选:换其他能拉的 vendor / 改 daemon.json 加加速源 / 自建私有 registry 中转——都是工程量,不为换 vendor 单独做
实测覆盖情况(2026-06-13)
某 Linux Docker 主机,daemon.json 配 DaoCloud docker.m.daocloud.io 加速源:
| Namespace / image | DaoCloud | 备注 |
|---|---|---|
eclipse-temurin:17-jre | ✅ | 稳定可拉 |
eclipse-temurin:21-jre | ✅ | |
azul/zulu-openjdk:17-jre-headless | ❌ 403 | 本次踩坑 |
nginx:alpine | ✅ | 官方镜像 |
mysql:8 | ✅ | 官方镜像 |
redis:6-alpine | ✅ | 官方镜像 |
maven:3.9-eclipse-temurin-17 | ✅ | build 容器 |
未实测的(下次要换前先试):
bellsoft/liberica-openjdk-alpine:17——Spring Boot 官方推荐 vendor,未知 DaoCloud 覆盖amazoncorretto:17-alpine-jdk——AWS 维护,未知 DaoCloud 覆盖ibmsemeru-runtimes:open-17-jre——IBM OpenJ9,未知