本质是DNS解析失败,需修正宿主机DNS配置:WSL2用户应禁用自动resolv.conf生成并配置daemon.json的dns字段,Linux用户可修改/etc/resolv.conf或daemon.json,Windows/macOS用户应设置系统级可靠DNS如223.5.5.5。

Docker 镜像拉取时出现域名解析失败(比如 Failed to resolve host、Could not resolve registry-1.docker.io 或 Temporary failure in name resolution),本质是容器或 Docker 守护进程无法将镜像仓库域名(如 registry-1.docker.io、hub.docker.com)正确转为 IP 地址。这不是镜像源本身的问题,而是 DNS 查询环节卡住了。
检查并修正宿主机的 DNS 配置
Docker 默认复用宿主机的 DNS 设置。如果宿主机网络本身 DNS 不稳(例如公司内网限制、路由器 DNS 故障),Docker 就会继承这个缺陷。
- 在 Windows/macOS 上,确认系统网络设置中 DNS 是可用的(推荐优先试
223.5.5.5(阿里云)或114.114.114.114(国内公共 DNS)) - 在 Linux(如 WSL2 中的 Ubuntu)上,检查
/etc/resolv.conf是否被覆盖或写死为不可用地址(常见于 WSL2 自动注入的 nameserver)。可临时覆盖:echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf - 若使用 WSL2,注意其 DNS 由 Windows 提供,可运行
wsl --shutdown后重启,让 WSL 重新同步 Windows 的 DNS
为 Docker 守护进程显式指定 DNS
绕过宿主机 DNS,直接给 dockerd 指定可靠 DNS 服务器,更稳定可靠。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 编辑
/etc/docker/daemon.json(不存在则新建) - 加入
"dns"字段,例如:{ "dns": ["223.5.5.5", "114.114.114.114"], "registry-mirrors": ["https://docker.1ms.run"] } - 保存后执行:
sudo systemctl daemon-reload && sudo systemctl restart docker - 验证:运行
docker info | grep -A 5 "DNS",确认输出含你配置的 DNS 地址
容器启动时单独指定 DNS 或 hosts 映射
适用于个别容器需要访问特定私有仓库或测试环境,不修改全局配置。
- 拉取镜像阶段不支持
--dns,但 运行容器时 可用:docker run --dns 223.5.5.5 -it ubuntu ping registry-1.docker.io - 若明确知道某仓库域名对应 IP(比如通过
nslookup registry-1.docker.io查到),可用--add-host强制解析:docker run --add-host=registry-1.docker.io:104.196.127.128 -it alpine wget -qO- https://registry-1.docker.io/v2/ - 该方式对
docker pull无效,仅适用于容器内应用访问;但可用于调试是否为纯 DNS 问题
避免 /etc/resolv.conf 被自动覆盖(尤其 WSL2)
WSL2 默认每次启动会重写 /etc/resolv.conf,导致手动改的 DNS 生效短暂。
- 在 WSL2 Ubuntu 中,创建
/etc/wsl.conf,写入:[network]<br>generateResolvConf = false
- 关机并运行 PowerShell:
wsl --shutdown,再重启 WSL2 - 之后可安全手动编辑
/etc/resolv.conf,或配合前面的daemon.json中"dns"使用,双重保障

















