Docker 报错“x509: certificate signed by unknown authority”的排查与解决实录

发布于:2025-06-25 ⋅ 阅读:(34) ⋅ 点赞:(0)

目录

🔧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,很可能只是你用了一个失效的链接。

欢迎留言交流,或将此经验分享到团队,避免大家踩同样的坑!


网站公告

今日签到

点亮在社区的每一天
去签到