docker报Error response from daemon: Get https://registry-1.docker.io/v2/library/image-name/manifests/

前天在使用 Docker 进行容器化部署时,遇到 TLS 握手超时的错误。在这里我将分享如何解决此问题。

错误信息

错误信息:Error response from daemon: Get https://registry-1.docker.io/v2/library/image-name/manifests/tag: net/http: TLS handshake timeout

这个错误通常在从 Docker 镜像仓库拉取镜像的过程中出现,意味着 Docker 守护进程无法建立与 TLS 连接相关的握手阶段。

解决方案

  1. 检查网络连接

    首先,确保网络连接正常并且可以访问 Docker 镜像仓库(registry-1.docker.io)。尝试通过浏览器访问该地址,以确认网络连接正常。

  2. 检查代理配置

    如果计算机使用了代理服务器,请确保 Docker 守护进程可以正确地配置和使用代理。按照以下步骤进行检查和设置:

    • 编辑 Docker 配置文件 daemon.json,通常位于 /etc/docker/ 目录下。

    • 在文件中添加以下代理配置参数:

      {
        "proxies": {
          "default": {
            "httpProxy": "http://your-proxy-server:proxy-port",
            "httpsProxy": "http://your-proxy-server:proxy-port"
          }
        }
      }
      
    • 替换 your-proxy-server 和 proxy-port 分别为代理服务器地址和端口。

    • 保存并关闭文件,然后重启 Docker 守护进程。

  3. 调整 TLS 超时设置

    如果网络环境较差,或者 Docker 镜像仓库的响应时间较长,可以尝试调整 Docker 守护进程的 TLS 超时设置。按照以下步骤进行操作:

    • 编辑 Docker 配置文件 daemon.json,通常位于 /etc/docker/ 目录下。

    • 在文件中添加以下参数:

      {
        "max-concurrent-downloads": 10,
        "max-concurrent-uploads": 10,
        "default-address-pool": [{"base": "10.0.0.0/8", "size": 24}],
        "live-restore": true,
        "max-download-attempts": 10,
        "max-event-backlog": 100,
        "max-retry-attempts": 10,
        "registry-mirrors": ["https://your-registry-mirror"]
      }
      
    • 替换 your-registry-mirror 为使用的镜像仓库地址。

    • 保存并关闭文件,然后重启 Docker 守护进程。

  4. 更新 Docker 版本

    如果使用的是较早版本的 Docker,尝试升级到最新版本,因为 Docker 更新版本通常包含了对 TLS 连接问题的解决方案。

  5. 检查防火墙设置

    某些防火墙规则可能会阻止 Docker 和镜像仓库之间的TLS通信。可以尝试禁用防火墙或者添加适当的规则来允许 TLS 连接。

总结

通过上述步骤,解决 Docker TLS 握手超时错误。确保逐一检查、配置和测试,以达到最佳效果。希望我的分享对您解决此问题提供帮助。

猜你喜欢

转载自blog.csdn.net/javamendou/article/details/131710035