Docker 报错“x509: certificate signed by unknown authority”的排查与解决实录
目录
📌 问题背景
🧪 排查过程
步骤 1:确认加速器地址是否可访问
步骤 2:检查 Docker 是否真的使用了镜像加速器
步骤 3:重新申请镜像加速器地址
✅ 解决方案
💡 总结与经验教训
🔚 结语
🔧Docker 报错“x509: certificate signed by unknown authority”的排查与解决实录
在使用 Docker 拉取镜像时,我遇到了如下错误:
Error response from daemon: Get "https://registry-1.docker.io/v2/": x509: certificate signed by unknown authority
这类错误通常是由于 TLS 证书验证失败引起的,但在实际排查中,我发现问题远比字面上看起来复杂,最终原因竟是镜像加速器链接已过期。这篇文章记录整个排查与解决过程,希望能帮到遇到类似问题的你。
📌 问题背景
我的 Docker 配置如下(/etc/docker/daemon.json
):
{"log-opts": {"max-size": "5m","max-file": "3"},"exec-opts": ["native.cgroupdriver=systemd"],"data-root": "/home/docker","registry-mirrors": ["https://dcf9dea02c7476d35af619.mirror.swr.myhuaweicloud.com"]
}
按理说,配置了华为云的镜像加速器后,镜像拉取应当变得更加顺畅,但 Docker 却频繁报出 TLS 证书校验错误,导致无法拉取如 hello-world
这样的公共镜像。
🧪 排查过程
步骤 1:确认加速器地址是否可访问
我尝试用 curl
测试镜像加速器接口:
curl -v https://dcf9dea02c7476d35af619.mirror.swr.myhuaweicloud.com/v2/
返回结果如下:
{"errors":[{"errorCode":"SVCSTG.SWR.4010000","errorMessage":"Authenticate Error"}]}
说明 TLS 没问题,但访问被拒绝(401 Unauthorized)。这提示我当前的加速器地址可能需要认证,或者已经失效。
步骤 2:检查 Docker 是否真的使用了镜像加速器
使用以下命令检查配置是否生效:
docker info | grep -i registry
结果表明,Docker fallback 到了官方的 Docker Hub registry-1.docker.io
,而 Docker Hub 的证书因系统 CA 不全而报错。
步骤 3:重新申请镜像加速器地址
这时候我怀疑原来的加速器地址已经过期,访问如下华为云控制台页面:
🌐 https://console.huaweicloud.com/swr/?region=cn-north-9#/swr/mirror
重新生成了属于我当前账号的 镜像加速器地址,例如:
https://xxxxx.mirror.swr.myhuaweicloud.com
✅ 解决方案
我将 daemon.json
文件更新为新的加速器地址:
{"log-opts": {"max-size": "5m","max-file": "3"},"exec-opts": ["native.cgroupdriver=systemd"],"data-root": "/home/docker","registry-mirrors": ["https://xxxxx.mirror.swr.myhuaweicloud.com"]
}
然后重启 Docker:
sudo systemctl daemon-reexec
sudo systemctl restart docker
再次执行:
docker pull hello-world
镜像拉取成功 ✅!
💡 总结与经验教训
-
x509
证书报错不一定是 TLS 问题,可能是 Docker fallback 到 Docker Hub; -
私有镜像加速器地址是会过期的,使用失效链接会被 401 拒绝;
-
应定期访问镜像服务平台,更新加速器地址;
-
docker info
是排查是否使用加速器的关键工具; -
配置完镜像加速器后务必重启 Docker,并验证生效。
🔚 结语
如果你也遇到了类似的 TLS 或证书错误,不妨从镜像加速器配置入手。别急着配置 insecure-registries
,很可能只是你用了一个失效的链接。
欢迎留言交流,或将此经验分享到团队,避免大家踩同样的坑!