Docker 网络相关问题
一、问题现象与核心原因
常见报错
- 拉取镜像时卡顿超时,始终停留在'Pulling from xxx'阶段。
- 明确报错:
Error response from daemon: Get "https://index.docker.io/v1/search?q=ubuntu&n=25": dial tcp: lookup index.docker.io on 127.0.0.53:53: server misbehaving。 - 配置国内加速源后,问题仍未解决,镜像仍优先尝试连接官方源
https://registry-1.docker.io/v2/。
核心原因
- 国内网络访问 Docker 官方镜像源存在天然限制,速度慢且易中断。
- Docker 守护进程与容器的 DNS 配置相互独立,容器 DNS 配置不影响守护进程拉取镜像时的 DNS 解析。
- Docker 守护进程不会继承终端的代理环境变量,需单独配置代理才能通过代理服务器访问镜像源。
二、分步解决流程
第一步:配置国内镜像加速源
国内加速源仅作为官方源的辅助加速通道,无法解决 DNS 或网络访问限制问题,但能提升后续访问成功率。
- 编辑 Docker 守护进程配置文件:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF
- 重新加载配置并重启 Docker:
sudo systemctl daemon-reload && sudo systemctl restart docker
配置完成后,若运行拉取命令仍报错:
Error response from daemon: Get "https://index.docker.io/v1/search?q=ubuntu&n=25": dial tcp: lookup index.docker.io on 127.0.0.53:53: server misbehaving
此时可怀疑是 DNS 域名解析的问题。检查 daemon.json 文件中的 字段,发现其仅影响容器内的 ,而 Docker 守护进程拉镜像时的 DNS 仍走宿主机的 (通常是 systemd-resolved 的 stub)。因此需要更改宿主机设置。







