运行docker run拉取镜像报x509证书域名不匹配错误如何解决
故障根因
报错核心是请求Docker官方镜像仓库registry-1.docker.io时,服务端返回的SSL证书属于内部测试域名*.qa.npsdev.cloud,和请求目标域名不匹配,触发TLS校验失败。该问题本质是请求没有被转发到真实的Docker Hub服务,和Docker本地证书信任配置无关。
修复步骤
按优先级从高到低排查:
- 校验命令执行一致性
报错提示本地查找的是plex:latest镜像,和预期执行的ubuntu镜像拉取逻辑不符,先执行history | grep "docker run"回溯历史命令,排查是否存在终端别名、自动执行脚本替换了实际执行的命令内容,排除低级操作误差。 - 排查DNS解析异常
执行nslookup registry-1.docker.io查看解析返回的IP,如果返回的是内网保留网段、未知测试网段IP,说明存在DNS污染。直接修改系统DNS为公共解析地址(如223.5.5.5、114.114.114.114),修改后执行sudo systemctl restart docker重启服务重试拉取。 - 排查代理配置错误
- 检查Docker服务级代理配置:查看
/etc/systemd/system/docker.service.d/http-proxy.conf文件内的HTTPS_PROXY参数,确认没有配置指向qa.npsdev.cloud相关的内部测试代理地址,错误配置直接删除或替换为可用代理。 - 检查系统全局代理:执行
echo $HTTPS_PROXY $https_proxy查看当前终端环境变量,若返回内部测试代理地址,先执行unset HTTPS_PROXY https_proxy临时清除,再删除对应shell配置文件(如~/.bashrc、/etc/profile)内的错误永久配置。 - 所有代理配置修改完成后,依次执行
sudo systemctl daemon-reload、sudo systemctl restart docker重载配置生效。
- 检查Docker服务级代理配置:查看
- 排查Docker daemon配置错误
查看/etc/docker/daemon.json配置文件,检查是否误将registry-1.docker.io加入了不安全仓库列表,或配置了指向内部测试服务的错误镜像加速地址,修正配置后重启Docker服务。 - 排查网络链路劫持
若以上配置均无问题,将设备切换到手机热点等完全独立于当前网络的环境重试拉取。如果切换网络后恢复正常,说明当前网络的网关、透明代理存在路由规则错误,将Docker Hub的请求转发到了内部测试服务,联系对应网络管理员修正路由规则即可。
内容的提问来源于stack exchange,提问作者OusmBlueNinja
相关产品推荐
相关产品推荐

