You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新Docker后无法构建镜像,证书验证失败求助

Docker构建镜像x509证书验证失败问题排查

问题描述

更新Docker后使用新版docker-compose构建镜像时,出现以下证书验证错误,已按公司手册重装证书并重启Docker,问题仍未解决:

[+] Building 0.0s (0/0)                                                         
[+] Building 0.4s (3/3) FINISHED                                                
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 2.54kB                                     0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 113B                                          0.0s
 => ERROR [internal] load metadata for common.dockerhub.{companyDomain}.pl/du/almali  0.3s 
------
 > [internal] load metadata for common.dockerhub.{companyDomain}.pl/du/almalinux:8:
[+] Building 0.0s (0/0)                                                         
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request: Head "https://common.dockerhub.{companyDomain}.pl/v2/du/almalinux/manifests/8": tls: failed to verify certificate: x509: certificate signed by unknown authority

可能的原因

  • 证书路径错误:Docker私有仓库证书需放在/etc/docker/certs.d/<仓库完整域名>/目录下(Linux系统),如果放错位置,Docker不会读取。
  • 证书文件名不符:Docker只识别ca.crt(根证书)、cert.crt(客户端证书)、key.pem(客户端密钥)这类标准命名的证书文件,文件名不对会导致无法识别。
  • 权限不足:证书文件权限设置不当,Docker进程没有读取权限,比如权限设为777或过于严格(如000)。
  • 版本更新的配置兼容问题:新版Docker可能调整了证书验证逻辑,之前通过系统CA证书生效的配置不再适用,需改用Docker专属证书目录。
  • 域名不匹配:证书颁发的域名与你访问的私有仓库域名不一致,比如证书是给dockerhub.{companyDomain}.pl的,但实际用的是common.dockerhub.{companyDomain}.pl。
  • 证书链不完整:私有仓库证书需要完整的证书链(包含中间证书),只安装根证书会导致验证失败。

查看Docker使用的证书的方法

  1. 检查专属证书目录:
    针对你的私有仓库域名,查看对应证书目录下的文件:

    ls -l /etc/docker/certs.d/common.dockerhub.{companyDomain}.pl/
    

    确认是否存在ca.crt等标准命名的证书文件。

  2. 查看Docker daemon日志:
    通过日志排查证书加载情况,不同系统命令不同:

    # Systemd系统(CentOS、Ubuntu等)
    journalctl -u docker.service
    # SysVinit系统
    tail -f /var/log/docker.log
    

    搜索certificate或x509关键词,查看是否有证书加载失败的提示。

  3. 用openssl验证证书有效性:
    手动验证证书能否正常访问仓库:

    openssl s_client -connect common.dockerhub.{companyDomain}.pl:443 -CAfile /path/to/your/ca.crt
    

    如果返回Verify return code: 0 (ok),说明证书有效;否则证书本身或配置存在问题。

  4. 检查Docker配置文件:
    查看daemon.json配置是否影响证书验证:

    cat /etc/docker/daemon.json
    

    确认是否有insecure-registries等配置干扰了证书验证逻辑。

内容的提问来源于stack exchange,提问作者Zbyszek Kisły

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:53:26