docker network_error ai_generated partial

守护进程响应错误:Get https://registry-1.docker.io/v2/:net/http:TLS 握手超时

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout

ID: docker/tls-handshake-timeout

其他格式: JSON · Markdown 中文 · English
75%修复率
88%置信度
1证据数
2023-09-05首次发现

版本兼容性

版本状态引入弃用备注
Docker 20.10.0 active — — —
Docker 24.0.0 active — — —
Docker 25.0.0 active — — —
Docker CE 26.0.0 active — — —

根因分析

Docker 守护进程无法与 Docker Hub 注册表建立 TLS 连接,原因是网络延迟、防火墙阻止或 DNS 解析问题。

English

The Docker daemon cannot establish a TLS connection to the Docker Hub registry due to network latency, firewall blocks, or DNS resolution issues.

generic

官方文档

https://docs.docker.com/engine/reference/commandline/pull/

解决方案

  1. Configure Docker daemon to use a mirror registry by editing /etc/docker/daemon.json: add '{"registry-mirrors": ["https://mirror.gcr.io"]}' and restart Docker. Then pull the image again.
  2. Increase TLS handshake timeout by setting environment variable: 'export DOCKER_CLIENT_TIMEOUT=120' and 'export COMPOSE_HTTP_TIMEOUT=120' before running docker commands.
  3. Check and update DNS settings: add '8.8.8.8' to /etc/resolv.conf or use systemd-resolved: 'sudo resolvectl dns docker0 8.8.8.8'.

无效尝试

常见但无效的做法:

  1. 60% 失败

    Setting HTTP_PROXY without HTTPS_PROXY in daemon.json does not affect TLS connections; the timeout persists.

  2. 70% 失败

    Flushing DNS cache (e.g., 'sudo systemctl restart systemd-resolved') rarely resolves the issue if the root cause is network congestion or firewall rules.