GitLab CI/CD中Docker登录提示未知权威签名证书错误求助
解决方案
方法1:在CI脚本中更新证书信任
docker:dind镜像默认的CA证书列表可能未包含你的证书颁发机构(CA)的根证书——即使你的证书不是自签名的,也可能是因为镜像内的证书包版本过旧。可以在CI脚本中添加证书更新步骤:
修改你的.gitlab-ci.yml:
stages: - build docker-build: image: docker:latest services: - docker:dind stage: build script: # 更新CA证书包 - apk add --no-cache --upgrade ca-certificates # 如果公共CA更新后仍无效,手动导入GitLab镜像仓库证书 # 替换为你证书的实际获取路径,比如从项目文件复制或curl下载 - curl -o /usr/local/share/ca-certificates/gitlab_registry.crt https://git.domain.com:5050/cert - update-ca-certificates # 执行登录 - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin
方法2:通过Runner挂载宿主机证书
你本地Docker可以正常登录,说明宿主机已信任该CA证书。可以修改GitLab Runner的config.toml,将宿主机的证书挂载到CI容器中:
找到[runners.docker]下的volumes配置,添加宿主机证书路径的挂载:
[runners.docker] tls_verify = false image = "node:latest" privileged = true disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/cache", "/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt"] shm_size = 0
修改后重启GitLab Runner服务:
gitlab-runner restart
方法3:检查镜像仓库地址配置
确认CI_REGISTRY变量指向的地址是否正确,确保端口、协议(http/https)与GitLab镜像仓库的实际配置一致。如果镜像仓库配置了HTTPS,需保证证书链完整且被信任。
内容的提问来源于stack exchange,提问作者Cacus
相关产品推荐
相关产品推荐

