docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp的解决方案

 更新时间:2025年08月04日 09:25:55   作者:猫头虎  
本文聚焦于解决 Docker 镜像拉取报错 “Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp …: i/o timeout” 问题,有需要的小伙伴可以了解下

前言

本文聚焦于解决 Docker 镜像拉取报错 “Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp …: i/o timeout” 问题,从 DNS 解析优化(修改 /etc/resolv.conf、在 daemon.json 中指定 DNS、编辑 /etc/hosts)、代理配置(systemd 级 HTTP_PROXY/HTTPS_PROXY、NO_PROXY 绕过 Docker Hub、客户端临时代理)、镜像 (配置国内 registry-mirrors、单次拉取 )、超时重试(DOCKER_CLIENT_TIMEOUT、COMPOSE_HTTP_TIMEOUT)、服务重启(systemctl restart docker、Docker Desktop 重启)、网络状态检查(ping、curl 诊断、NAT 与桥接模式、iptables/firewalld 防火墙、安全组开放 443 端口)、系统时间同步(ntpdate)、MTU 调整、私有 Registry 支持、 穿透等多维度排查与实战方案,助力 Ubuntu、CentOS、macOS、Docker Desktop 等多环境下,快速定位并彻底解决 Docker pull 超时、dial tcp、网络中断、镜像源被Q、代理配置不当、DNS 解析失败等常见故障,实现 Docker 镜像拉取稳定性与 优化。

一、摘要

在使用 Docker 拉取镜像时,常常会遇到以下错误:

Error response from daemon: Get “https://registry-1.docker.io/v2/”: dial tcp …: i/o timeout

该问题通常由 DNS 解析失败、网络连接中断、代理设置不当、镜像源被墙或超时限制等多种因素引起。本文将汇总全网最新的实战方案,按四大方向分类——DNS 解析优化、代理配置、镜像 与超时调整,以及服务重启与网络状态检查,并在此基础上扩展更多排查和优化思路,帮助你快速定位并彻底解决该错误。

二、开发环境

  • 操作系统:Ubuntu 20.04 / CentOS 7 / macOS
  • Docker 版本:20.10.x
  • 网络环境:公司内网、校园网及家庭宽带均适用

三、错误场景与技术细节

异常复现场景

执行命令:

docker pull nginx:latest

控制台输出:

Error response from daemon: Get “https://registry-1.docker.io/v2/”: dial tcp 34.194.164.123:443: i/o timeout

可能触发因素

在排查该问题时,千万不要漏掉任何一环,从本地 DNS、操作系统级网络,到 Docker 配置,每一步都可能是“罪魁祸首”。

四、解决方案详解

DNS 解析优化

配置/etc/resolv.conf

sudo vim /etc/resolv.conf
# 添加公共 DNS
nameserver 8.8.8.8
nameserver 8.8.4.4
# 如在国内网络,可再追加
nameserver 114.114.114.114

在 Docker Daemon 中指定 DNS

编辑 /etc/docker/daemon.json,加入:

{
  "dns": ["8.8.8.8", "8.8.4.4"]
}

然后重启:

sudo systemctl daemon-reload
sudo systemctl restart docker

编辑/etc/hosts(临时方案)

# 先通过 dig 获取 IP
dig registry-1.docker.io +short
# 然后在 /etc/hosts 中添加
34.228.211.243 registry-1.docker.io

代理配置

Daemon 级代理

创建或编辑 /etc/systemd/system/docker.service.d/https-proxy.conf

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=http://proxy.example.com:443"
Environment="NO_PROXY=registry-1.docker.io,localhost,127.0.0.1"

重载并重启:

sudo systemctl daemon-reload
sudo systemctl restart docker

客户端临时代理

export HTTP_PROXY="http://proxy.example.com:80"
export HTTPS_PROXY="http://proxy.example.com:443"
docker pull nginx:latest

镜像与超时调整

配置国内镜像器

/etc/docker/daemon.json 中添加:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ]
}

备用:

{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.domys.cc",
    "https://docker.imgdb.de",
    "https://docker-0.unsee.tech",
    "https://docker.hlmirror.com",
    "https://cjie.eu.org",
    "https://docker.m.daocloud.io",
    "https://hub.rat.dev",
    "https://docker.1panel.live",
    "https://docker.rainbond.cc"
  ]
}

重启 Docker 生效。

单次拉取

export REPO=docker.m.daocloud.io
docker pull ${REPO}/library/nginx:latest

增加超时重试

export DOCKER_CLIENT_TIMEOUT=120
export COMPOSE_HTTP_TIMEOUT=120

服务重启与网络状态检查

重启 Docker 服务

sudo systemctl restart docker

有时仅重启 daemon 即可立刻恢复。

检查主机网络

  • 确认宿主机/VM 已联网,必要时切换 NAT 或桥接模式
  • 使用 ping registry-1.docker.iocurl -vvv https://registry-1.docker.io/v2/ 诊断

防火墙 & 安全组

检查 iptablesfirewalld、云平台安全组是否开放 443 端口

临时关闭防火墙测试:

sudo systemctl stop firewalld
sudo iptables -F

更多扩展方案

扩展场景解决思路
系统时间不同步校准 NTP:sudo ntpdate time.windows.com
MTU 值不匹配调整网卡 MTU:sudo ip link set dev eth0 mtu 1400
内部私有 Registry在 /etc/docker/daemon.json 添加 insecure-registries
使用 》〉配置确认 Docker 也走了系统daili
Docker Desktop直接在 GUI 中重启,或清理缓存:Docker → Preferences → Clean/Purge

五、方案总结

问题类型关键命令或配置示例
DNS 解析/etc/resolv.conf / daemon.json 中配置 DNS
代理设置/etc/systemd/.../https-proxy.conf
镜像registry-mirrors / 单次 export REPO=…
超时调整export DOCKER_CLIENT_TIMEOUT=120
服务重启systemctl restart docker
防火墙 & 安全组iptables -F / firewalld stop
系统时间 & MTUntpdate / ip link set mtu
私有 Registry 支持insecure-registries

到此这篇关于docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp的解决方案的文章就介绍到这了,更多相关docker拉取镜像超时报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker安装fastdfs镜像的一些注意事项

    docker安装fastdfs镜像的一些注意事项

    在安装docker fastdfs镜像时大家需要注意如果是云服务器则需要在云服务器后台的安全组入口方向放开22122、23000以及8888端口,并且在云服务器防火墙配置放开以上三个端口,具体内容详情大家跟随小编一起看看吧
    2021-05-05
  • Spring Boot 打包上传Docker 仓库的详细步骤

    Spring Boot 打包上传Docker 仓库的详细步骤

    这篇文章主要介绍了Spring Boot 打包上传Docker 仓库的详细步骤,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Docker如何批量删除images

    Docker如何批量删除images

    这篇文章主要介绍了Docker如何批量删除images问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 在 docker 之间导出导入镜像的方法

    在 docker 之间导出导入镜像的方法

    本篇文章主要介绍了在 docker 之间导出导入镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • docker安装部署 onlyoffice的详细过程

    docker安装部署 onlyoffice的详细过程

    本文给大家分享docker安装部署 onlyoffice的详细过程,通过图文并茂实例相结合给大家分享安装Docker Desktop及如何进入BIOS设置CPU的虚拟化,感兴趣的朋友一起看看吧
    2021-06-06
  • 在docker中搭建部署clickhouse过程

    在docker中搭建部署clickhouse过程

    文章介绍了在Docker中部署ClickHouse并进行网关日志存储的步骤,包括创建ClickHouse容器、修改用户配置、使用DBeaver连接以及在Spring Boot中集成ClickHouse进行读写操作
    2024-11-11
  • Docker 数据管理Named volume详解

    Docker 数据管理Named volume详解

    这篇文章主要介绍了Docker 数据管理Named volume详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • 使用Docker Swarm搭建分布式爬虫集群的方法示例

    使用Docker Swarm搭建分布式爬虫集群的方法示例

    这篇文章主要介绍了使用Docker Swarm搭建分布式爬虫集群的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Docker在Windows系统中的安装和使用方法详解

    Docker在Windows系统中的安装和使用方法详解

    这篇文章主要给大家介绍了关于Docker在Windows系统中的安装和使用方法,Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,需要的朋友可以参考下
    2023-09-09
  • Docker中Cgroup资源配置的实现

    Docker中Cgroup资源配置的实现

    Cgroup不仅可以限制被namespace 隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等,本文主要介绍了Docker中Cgroup资源配置的实现,感兴趣的可以了解一下
    2023-09-09

最新评论