Docker镜像拉取遇证书错误:无代理环境下CA证书是否损坏?
解决Docker Registry的x509证书未知权威问题
老哥,咱们来解决你遇到的这个Docker证书问题。既然你已经排除了代理的因素,那大概率是系统的CA证书出了损坏,或者Docker没正确加载系统信任的根证书。下面一步步来排查修复:
1. 先修复系统CA证书
首先得确认系统的根CA证书是不是真的损坏了,不同系统的操作略有区别:
- Debian/Ubuntu系:
运行这条命令重新生成CA证书缓存:
要是发现证书文件缺失,直接重装证书包:update-ca-certificates --freshapt install --reinstall ca-certificates - RHEL/CentOS/Rocky Linux系:
更新CA信任存储:
证书损坏的话就重装证书包:update-ca-trust extractyum reinstall ca-certificates
2. 让Docker正确识别系统CA证书
有时候Docker不会自动读取系统的CA证书,咱们手动给它配置一下:
- 创建Docker对应Registry的证书目录:
mkdir -p /etc/docker/certs.d/registry-1.docker.io - 把系统的根CA证书复制到这个目录,并重命名为
ca.crt:- Debian/Ubuntu用这条:
cp /etc/ssl/certs/ca-certificates.crt /etc/docker/certs.d/registry-1.docker.io/ca.crt - RHEL/CentOS用这条:
cp /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/docker/certs.d/registry-1.docker.io/ca.crt
- Debian/Ubuntu用这条:
- 重启Docker服务让配置生效:
systemctl restart docker
3. 临时测试方案(别在生产环境用!)
要是你只是想快速验证问题,能临时跳过证书验证(注意这会有安全风险,测试完一定要改回来):
- 编辑Docker的守护进程配置文件
/etc/docker/daemon.json,如果没有就新建:{ "insecure-registries": ["registry-1.docker.io"] } - 重启Docker服务:
systemctl restart docker - 测试
docker run hello-world,成功后记得把daemon.json里的配置删掉,再重启Docker。
4. 最后验证
做完上面的步骤后,再跑一遍docker run hello-world,要是能正常拉取镜像并输出欢迎信息,那就说明问题解决了。如果还是不行,记得检查一下系统时间是否正确——证书验证对时间很敏感,要是系统时间和实际差太多也会报错。
内容的提问来源于stack exchange,提问作者papu bhattacharya
相关产品推荐
相关产品推荐

