GitLab Auto DevOps登录容器注册表时遇x509未知权威证书错误
解决GitLab Auto DevOps构建时的证书信任问题
这个错误的核心原因很明确:你的物理机已经导入了GitLab容器注册表的自签名证书,所以能正常登录,但执行Auto DevOps构建的GitLab Runner所在环境(不管是Docker容器还是物理机)并没有信任这个证书,导致Docker在和注册表通信时验证证书失败。
下面分两种最常见的Runner部署场景给出解决方案:
场景1:GitLab Runner以Docker容器方式运行
- 先找到你的GitLab Runner配置目录(默认是宿主机的
/etc/gitlab-runner),在里面创建certs子目录(如果还没有的话):mkdir -p /etc/gitlab-runner/certs - 将你的注册表证书文件(比如
myregistry.com.crt)拷贝到这个certs目录里,注意证书文件名要去掉端口号——Docker会自动匹配域名对应的证书,所以文件名应该是myregistry.com.crt而不是myregistry.com:5000.crt。 - 重启GitLab Runner容器,让它加载新的证书配置:
docker restart gitlab-runner
场景2:GitLab Runner直接安装在物理机上
这种情况下需要同时配置Docker的证书信任和重启相关服务:
- 在物理机上创建Docker的证书目录,对应你的注册表地址:
mkdir -p /etc/docker/certs.d/myregistry.com:5000 - 将你的自签名证书拷贝到这个目录,并重命名为
ca.crt:cp /path/to/your/registry-cert.crt /etc/docker/certs.d/myregistry.com:5000/ca.crt - 重启Docker服务,让它读取新的证书信任列表:
systemctl restart docker - 最后重启GitLab Runner服务,确保它使用更新后的Docker环境:
systemctl restart gitlab-runner
验证配置是否生效
在Runner所在的环境(容器或物理机)里手动执行登录命令:
docker login myregistry.com:5000
如果能成功登录,说明证书信任配置已经生效,此时再重新触发Auto DevOps构建应该就能正常运行了。
内容的提问来源于stack exchange,提问作者Oion Power
相关产品推荐
相关产品推荐

