执行docker system prune -a -f后无法构建Docker镜像,报x509: certificate signed by unknown authority错误求助
解决Docker构建时x509证书未知权威问题
嘿,别着急,你遇到的这个x509: certificate signed by unknown authority错误,大概率是执行docker system prune -a -f时不小心清理了Docker的证书缓存,或者系统层面的CA证书配置出了小问题。下面几个方案应该能帮你搞定:
先试试最简单的:重启Docker服务
有时候Docker的证书缓存会抽风,重启一下就能恢复正常。执行这条命令:sudo systemctl restart docker
重启完再跑一遍你的构建命令:sudo docker build -t test_image .,看看能不能正常拉取镜像。更新系统的CA证书
如果系统的根CA证书过期或者缺失,Docker拉取远程镜像时就会验证失败。针对你的Ubuntu系统,执行这几条命令更新证书:
sudo apt update sudo apt install --reinstall ca-certificates sudo update-ca-certificates
更新完成后记得再重启Docker服务,然后尝试构建。
- 检查是否有Docker代理干扰
如果你之前给Docker配过代理,可能代理的证书没被系统信任。可以先临时关掉代理试试:
- 打开Docker的配置文件
/etc/docker/daemon.json,如果里面有http-proxy或者https-proxy的配置,先把它们注释掉(加//或者用#)或者直接删除。 - 重启Docker服务:
sudo systemctl restart docker - 再尝试构建镜像,看是否能正常拉取。
- 手动拉取镜像导入本地
要是上面的方法都不行,那就绕过远程拉取,手动下载镜像再导入Docker:
- 找到ubuntu:18.04的镜像包(可以用
wget命令从官方源下载) - 下载完成后用这条命令导入:
sudo docker load -i ubuntu_18.04.tar - 导入成功后,Docker构建时就会直接用本地的镜像,不用再去远程拉取了。
另外,如果是在企业内网环境,可能还需要把内网的CA证书添加到系统信任列表里:把证书文件复制到/usr/local/share/ca-certificates/目录,然后执行sudo update-ca-certificates,再重启Docker就行。
内容的提问来源于stack exchange,提问作者user14305160




