Docker拉取错误:x509证书已过期或尚未生效。

40

问题描述:

我正在尝试使用以下命令从公共仓库中拉取Ubuntu:

docker pull ubuntu

然后我得到了这个结果(之前的命令昨天还可以工作):

"拉取镜像时出错:获取 https://index.docker.io/v1/repositories/library/ubuntu/images:x509: 证书已过期或尚未生效"

docker 版本:

Client:
Version: 1.10.0
API version: 1.22
Go version: go1.5.3
Git commit: 590d510
Built: Thu Feb 4 18:36:33 2016
OS/Arch: linux/amd64

Server:
Version: 1.10.0
API version: 1.22
Go version: go1.5.3
Git commit: 590d510
Built: Thu Feb 4 18:36:33 2016
OS/Arch: linux/amd64

docker 信息:

Containers: 4
Running: 0
Paused: 0
Stopped: 4
Images: 20
Server Version: 1.10.0
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 44
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins: 
Volume: local
Network: bridge null host
Kernel Version: 3.19.0-49-generic
Operating System: Ubuntu 14.04.3 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 5.815 GiB
Name: ubuntu
ID: Y6OO:23T2:BAPU:DVQJ:HJCJ:USEP:T6EU:PMG4:O4M6:46C7:JKPC:BQHT
WARNING: No swap limit support

uname -a :

内核版本信息:

Linux ubuntu 3.19.0-49-generic #55~14.04.1-Ubuntu SMP Fri Jan 22 11:24:31 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

我验证了我的“日期”,一切都很好。我不知道这个问题可能来自哪里。


对于那些在私有仓库方面遇到问题的人,这个链接可能会有所帮助:https://stackoverflow.com/a/65184268/1938507 - Junaed
20个回答

0
在开发环境中,您可以避免此错误,修改位于/etc/docker/daemon.json的文件daemon.json,在列表中添加不安全的注册表并重新启动docker引擎。
{
  "insecure-registries" : [ "myinsecureregistry.com:443", "myinsecureregistry.com", "x.x.x.x:5000" ]
}

参考: 守护进程配置


-1
如果其他建议都没有帮助到您,确保您没有同时使用反向代理(如Apache) Jetty。
如果您同时使用两者,很可能存在一个*.jks文件,其中未更新最新的证书。

-1

每当您遇到以下问题时,请将日期和时间设置正确:

"拉取镜像时出错:获取 https://index.docker.io/v1/repositories/library/ubuntu/images: x509:证书已过期或尚未生效"

对于Linux系统,请使用以下命令设置日期和时间:

sudo date --set='Mon Jan 13 14:50:44 IST 2020' "注意"=> 如果您来自不同的时区,请设置为CST,EST,EDT等。


-1
如果在Windows上使用Docker时出现了这种情况: 尝试重新启动Windows,它会帮助解决timezone问题。

-1
在Windows上,使用WSL2后端?您可以打开一个新的WSL2命令提示符并使用:
sudo hwclock -s

-1

检查您的Docker注册表是否正在运行。如果没有运行注册表,请尝试执行以下命令:docker run -d -p 5000:5000 --name registry registry:2


-1
尝试更新你的操作系统。有时候一些证书链也会随之更新。在我的情况下,这个问题已经解决了。

-1

在我的情况下,我不得不添加

registry_nginx['ssl_certificate'] = "/path/to/certificate.pem"
registry_nginx['ssl_certificate_key'] = "/path/to/certificate.key"

针对我的gitlab.example.com域名,我使用certbot进行SSL证书认证,因此需要修改/etc/gitlab/gitlab.rb文件。我将相同的fullchain.pem和privkey.pem用于我的注册表,错误问题得到了解决。


-1

我在Centos7中遇到了类似的问题。

错误:

-bash-4.2$ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.1
Error response from daemon: Get https://docker.elastic.co/v2/: x509: certificate has expired or is not yet valid

解决方案:

如其他人所建议,检查了系统日期,一切正常。Docker 拉取了所有其他仓库 - 所有都正常工作。

以下步骤解决了问题:

  1. 按照此处链接列出的步骤重置受信任的 CA 证书列表。
  2. 使用 sudo systemctl docker restart 重新启动 Docker。

Docker pull 应该可以正常工作。

-bash-4.2$ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2
7.10.2: Pulling from elasticsearch/elasticsearch

-4

您需要检查网络配置。如果您分配了单个网络接口,您将会遇到此问题。在网络设置中,请检查NIC是否同时启用公共和私有。


1
这个答案没有意义,也缺乏解释。 - jitter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接