当前位置: 首页 > news >正文

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

目录

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

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

http://www.lqws.cn/news/506701.html

相关文章:

  • 什么是 OA 系统?OA 系统要具备什么样的功能?
  • jsoncpp-src-0.5.0编译
  • Python Bug 修复案例分析:编码问题导致程序出现bug 两种修复方法
  • Redis哈希表Rehash全解析:扩容缩容背后的渐进式智慧
  • SpringBoot 自动化部署实战:CI/CD 整合方案与避坑全指南
  • 相较于传统购物,AR 购物在便利性方面体现在哪些维度?​
  • IDC报告AR/VR市场反弹Meta份额超半,谷歌/微美全息精准卡位AR/AI眼镜市场机遇
  • 快速搭建系统原型,UI界面,有哪些高效的AI工具和方法
  • 数智助农 金融兴乡:中和农信双轮驱动农业现代化实践
  • 重医等利用纯生信在iMeta(中科院1区|IF33.2)发表:多组学联合分析西部五省母婴队列数据
  • 【C/C++】C++ 编程规范:101条规则准则与最佳实践
  • (LeetCode 面试经典 150 题 )121. 买卖股票的最佳时机 (遍历)
  • 【Unity】MiniGame编辑器小游戏(四)数独【Sudoku】
  • 战略调整频繁,如何快速重构项目组合
  • Kubernetes生命周期管理:深入理解 Pod 生命周期
  • 【数据结构】_二叉树的遍历与销毁
  • 交易期权先从买方开始
  • 【Linux网络与网络编程】15.DNS与ICMP协议
  • 打包上传到Linux部署并启动
  • 【JS-4.8-type属性】深入理解DOM操作中的type属性及其常见应用
  • Python 猜数字小游戏:Tkinter 实现的互动猜数挑战
  • 国际标准 ISO 8601 详解
  • SpringBoot + MyBatis 事务管理全解析:从 @Transactional 到 JDBC Connection 的旅程
  • NVIDIA GPU架构学习笔记
  • SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!
  • WPF CommunityToolkit.Mvvm 信使 (ObservableRecipient)
  • EasyExcel单元格内换行,合并单元格
  • 记录一下小程序城市索引栏开发经历
  • 鸿蒙开发深入解析:Service Ability(后台任务)全面指南
  • Spring Boot 返回错误文件的正确性分析与优化