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

更新SSL证书后无法登录Docker私有镜像仓库

解决Docker私有仓库更新SSL证书后登录失败的问题

我之前也碰到过类似的情况,Let's Encrypt证书更新后Linux上的Docker死活不认新证书,重启好几次都没用,下面给你一步步拆解解决方案:

Docker确实会缓存SSL相关信息

Docker在Linux上不仅依赖系统的证书存储,自身也会缓存部分SSL证书和登录凭证。Windows重启能解决是因为它的Docker Desktop缓存机制和Linux不一样,Linux上需要手动清理相关缓存才能让Docker识别新证书。

具体解决步骤

1. 先确认仓库端的证书部署是否正确

首先要排除不是仓库那边的问题,用openssl命令检查证书链是否完整:

openssl s_client -connect your-registry-domain:443

看输出里的Certificate chain部分,应该包含Let's Encrypt的中间证书和根证书,如果只有你的域名证书,那就是证书链不完整,需要确保仓库配置里用的是fullchain.pem而不是单独的cert.pem。

2. 更新系统证书存储并同步给Docker

Linux上的Docker默认会读取系统的CA证书,所以先更新系统的证书缓存:

sudo update-ca-certificates

如果你的Let's Encrypt证书没有被系统CA识别,还可以手动把证书放到Docker的专属证书目录:

# 创建对应仓库的证书目录
sudo mkdir -p /etc/docker/certs.d/your-registry-domain/
# 复制完整证书链到该目录,命名为ca.crt
sudo cp /etc/letsencrypt/live/your-registry-domain/fullchain.pem /etc/docker/certs.d/your-registry-domain/ca.crt

然后重启Docker服务让配置生效:

sudo systemctl restart docker

3. 清理Docker的登录缓存

Docker的登录凭证存在用户目录下的~/.docker/config.json里,有时候旧的凭证会和新证书冲突,你可以:

  • 备份原配置文件:
    cp ~/.docker/config.json ~/.docker/config.json.bak
    
  • 编辑config.json,删除对应私有仓库的auth条目;或者直接删除这个文件(会丢失所有Docker Hub、私有仓库的登录信息,之后需要重新登录):
    rm ~/.docker/config.json
    
  • 最后重新登录私有仓库:
    docker login your-registry-domain
    

4. 额外调试手段

如果还是不行,用debug模式登录看详细日志:

docker --debug login your-registry-domain

从日志里可以看到Docker到底是在哪个环节找不到信任的证书,方便进一步排查。

内容的提问来源于stack exchange,提问作者user4772933

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:18:13