【问题标题】:Docker pull error : x509: certificate has expired or is not yet validDocker 拉取错误:x509:证书已过期或尚未生效
【发布时间】:2016-05-19 07:19:58
【问题描述】:

问题描述:

我正在尝试使用以下命令从公共注册表中提取 ubuntu:

docker pull ubuntu

然后我得到了这个结果(上一个命令昨天还在工作):

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

码头工人版本:

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

码头信息:

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

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

【问题讨论】:

标签: ubuntu docker x509certificate pull crt


【解决方案1】:

这个是为我做的docker-machine regenerate-certs --client-certs

【讨论】:

  • 问题突然浮出水面。感谢您的提示!
  • 谢谢!这真的很有帮助。不知道为什么它没有在任何地方记录,或者一些适当的警告并不能解释问题到底是什么。
  • 非常感谢!我最近用时间机器恢复了我的 mac,看起来 docker cert 不再有效。经过数小时的挫折,我终于可以解决这个问题了。
  • docker-machine 不再可用。
【解决方案2】:

这显然也可能随着时间漂移而发生,这是 Docker Desktop for Windows 的一个问题。默认情况下,运行 Docker 守护程序的 Linux VM 上的时钟不会与您的主 Windows 主机同步时间。如果像我一样,您在笔记本电脑上工作,并且您的笔记本电脑长时间处于睡眠状态而您没有重新启动或以其他方式重新启动 Docker,那么您的 Linux VM 的时钟似乎可以漂移到足以让您收到此错误。但是,重新启动 Docker 会清除它。

我认识到 OP 可能不再需要答案,也不一定是 OP 问题(没有迹象表明他们是否使用 Windows),但由于我是通过自己对这个问题的研究来到这里的,所以我想我会添加答案。

【讨论】:

  • 谢谢,遇到这个问题是因为机器在 3 月 30 日英国夏令时处于休眠状态,而 Docker VM 正在运行时时钟发生变化。重启 Docker 解决了这个问题。
  • 就我而言,重启 Docker Desktop 是不够的(我使用 Docker Desktop WSL 2 后端);重新启动机器后,问题就消失了。
  • 退出 Docker-desktop 并重新开始工作。出于某种原因,简单地重新启动 Docker-desktop 并没有产生相同的效果。谢谢。
【解决方案3】:

我收到此错误,它与系统日期/时间设置有关。 (我意识到 OP 说他的日期没问题,只是为其他可能到达这个问题所在页面的人添加此评论 - 就像我一样!!)

当我启动我的机器并且时间/日期设置不正确时遇到问题。后来,在我的机器设置了正确的日期/时间后,我尝试从 docker 中拉取图像并得到上述错误。

我重新启动了本地运行的 docker 守护程序,因此它选择了新的日期/时间,现在可以再次成功拉取。

【讨论】:

    【解决方案4】:

    如果这发生在 Windows 上的 Docker 上

    只需重启 Docker 桌面

    【讨论】:

    • 非常喜欢 IT Crowd 解决方案的工作...:谢谢。
    • 想要补充:我点击了“重启 Docker...”,但没有成功。但是完全关闭它然后启动它。
    【解决方案5】:

    就我而言,我决定将服务器的日期和时间更改为当前日期。

    【讨论】:

    • 可能是人们建议的最糟糕的解决方案之一:(
    • @agilob 将服务器更改为当前日期以外的其他日期会很糟糕。我将其视为其他答案的副本,即以色列在服务器上修复了时间/日期。相反,如果他们更改日期以匹配证书,那么我同意这很糟糕。
    【解决方案6】:

    您可以在启动 docker deamon 时使用--insecure-registry 选项,或者需要提供有效的证书路径。在此处查找details

    【讨论】:

    • 链接已失效。
    • 谢谢。更正了链接。
    【解决方案7】:

    这也发生在我身上:

    • 尝试登录 Artifactory 时。
    • 当我的本地 docker 守护程序已经运行了几个星期时。

    我只是重新启动了我的本地 docker 守护程序,并且可以登录到 Artifactory 而没有错误消息。

    【讨论】:

      【解决方案8】:

      我在 centos vagrant vm 机器上遇到了类似的问题。当我拉任何 docker 图像时,弹出以下错误

         error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/4b/4bb46517cac397bdb0bab6eba09b0e1f8e90ddd17cf99662997c3253531136f8/data?verify=1597376104-j8KSa2vKDeIZNFuPq0EP9cb3sqc%3D: x509: certificate has expired or is not yet valid
      

      问题是 centos vagrant vm 机器的日期和时区与我的主机不同。 将我的 vm 机器更新到与我的主机相同的日期和时区后,问题得到了解决。

         #check the timezone
         $timedatectl
         #update timezone
         $timedatectl set-timezone America/Toronto
         #update date
         date --set="Fri August 14 3:08:10 EDT 2020"
      

      【讨论】:

        【解决方案9】:

        检查您的 docker 注册表是否正在运行。如果没有注册表正在运行 尝试 docker run -d -p 5000:5000 --name registry registry:2

        【讨论】:

          【解决方案10】:

          如果其他建议对您没有帮助,请确保您没有使用反向代理(如 Apache)AND Jetty。

          如果您同时使用两者,则很可能存在尚未使用最新证书更新的 *.jks。

          【讨论】:

            【解决方案11】:

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

            sudo hwclock -s

            【讨论】:

              【解决方案12】:

              我在 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 提取了所有其他 repos - 一切正常。

              以下步骤解决了该问题:

              1. 按照here 列出的步骤重置受信任的 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
              

              【讨论】:

                【解决方案13】:

                在我的情况下,我必须添加

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

                到我的 /etc/gitlab/gitlab.rb ,因为我正在使用 certbot 对我的 gitlab.example.com 域进行 ssl 认证。 我在注册表中使用了相同的 fullchain.pem 和 privkey.pem,错误消失了。

                【讨论】:

                  【解决方案14】:

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

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

                  linux系统使用下面的命令设置日期和时间

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

                  【讨论】:

                    【解决方案15】:

                    在开发环境中你可以避免这个错误修改文件 daemon.json 分配在 /etc/docker/daemon.json 在列表中添加一个不安全的注册表并重启 docker 引擎

                    {
                      "insecure-registries" : [ "myinsecureregistry.com:443", "myinsecureregistry.com", "x.x.x.x:5000" ]
                    }
                    

                    参考:daemon configuration

                    【讨论】:

                      【解决方案16】:

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

                      【讨论】:

                      • 这个答案毫无意义,缺乏解释。
                      猜你喜欢
                      • 2018-06-03
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-01-12
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多