docker pull 报x509
最近通过docker pull
拉取私有仓库镜像出错,具体报错(证书问题
):
docker pull 私有仓库ip/资源路径
x509: certificate has expired or is not yet valid
要注意。如果报509
问题通常两方面原因:
- 1.系统时间不同步
- 2.证书问题,daemon.json文件配置有问题
1.系统时间不同步-解决方案
先使用date
命令查看系统当前时间,如果明显有问题,就要用到另外一个工具:ntpdate
,如果没有此命令,安装即可,ubuntu: apt install -y ntpdate
,centos: yum install -y ntpdate
。
首先更新时间:
# 更新时间同步:
ntpdate cn.pool.ntp.org
然后从新拉取镜像,应该此问题就可以解决。
2.daemon.json文件配置有问题
证书的问题需要编辑 daemo.json 文件:vi /etc/docker/daemon.json
参考格式如下:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":[
"172.xx.xxx.xxx:4433",
"reg-cloud.xxxxx.com"
]
}
注意编辑的时候,格式,单词拼写,符号等不要出错。
保存后,重新载入配置,然后重启docker:
# systemctl daemon-reload
# service docker restart 或者 systemctl restart docker
docker pull 公有仓库报x509错误
具体见如下:
Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate signed by unknown authority
这个问题是本机没有远程仓库的证书文件(远程仓库是https://方式访问的)
解决方式简单:
输入以下命令
echo -n | openssl s_client -showcerts -connect registry-1.docker.io:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt
注意,每个人的情况可能不一样,对应pull的仓库用自己的domain,例如我的就是:registry-1.docker.io
更换后,重启docker:service docker restart
然后就可以正常pull镜像了:
link: docker X509 证书错误的终极解决办法
docker启动报错
docker启动的时候,报错:
Failed to start Docker Application Container Engine
该问题一般还是用户配置有问题导致,即上文提到的daemon.json
,正确配置后重启docker
,问题应该解决。