docker 报错Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF
#!/bin/bash
# Docker Registry EOF 错误修复脚本
# 适用于: Error response from daemon: Get "https://registry-1.docker.io/v2/": EOF
# 1. 检查网络连接
echo "=== 网络连接测试 ==="
ping -c 4 registry-1.docker.io || echo "无法连接到 registry-1.docker.io"
# 2. 检查 DNS 解析
echo -e "
=== DNS 解析测试 ==="
dig registry-1.docker.io +short || echo "DNS 解析失败"
# 3. 检查防火墙设置
echo -e "
=== 防火墙检查 ==="
sudo ufw status | grep "Status: active" && {
echo "防火墙已启用,检查443端口是否开放"
sudo ufw allow 443/tcp
sudo ufw reload
}
# 4. 检查代理设置
echo -e "
=== 代理配置检查 ==="
if [ -f /etc/systemd/system/docker.service.d/http-proxy.conf ]; then
echo "检测到代理配置:"
cat /etc/systemd/system/docker.service.d/http-proxy.conf
echo "尝试暂时禁用代理..."
sudo mv /etc/systemd/system/docker.service.d/http-proxy.conf /etc/systemd/system/docker.service.d/http-proxy.conf.bak
fi
# 5. 检查 MTU 设置
echo -e "
=== MTU 设置检查 ==="
current_mtu=$(ip link show docker0 | awk '/mtu/{print $5}')
echo "当前 docker0 MTU: $current_mtu"
if [ $current_mtu -gt 1500 ]; then
echo "尝试降低 MTU 值..."
sudo ip link set dev docker0 mtu 1500
fi
# 6. 重启 Docker 服务
echo -e "
=== 重启 Docker 服务 ==="
sudo systemctl daemon-reload
sudo systemctl restart docker
# 7. 测试 Docker 连接
echo -e "
=== 测试 Docker Hub 连接 ==="
docker pull hello-world && {
echo "连接成功!"
docker run --rm hello-world
} || {
echo "连接失败,尝试其他解决方案..."
# 8. 更换镜像源
echo -e "
=== 尝试使用阿里云镜像源 ==="
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker pull hello-world
}
# 9. 恢复代理设置(如果存在)
if [ -f /etc/systemd/system/docker.service.d/http-proxy.conf.bak ]; then
echo -e "
=== 恢复代理设置 ==="
sudo mv /etc/systemd/system/docker.service.d/http-proxy.conf.bak /etc/systemd/system/docker.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
fi
echo -e "
修复脚本执行完成!如果问题仍未解决,请检查网络环境或联系网络管理员。"
使用说明
- 将脚本保存为
fix_docker_registry_error.sh - 添加执行权限:
chmod +x fix_docker_registry_error.sh - 以管理员权限运行:
sudo ./fix_docker_registry_error.sh - 按照脚本提示操作
此脚本会逐步诊断并修复 Docker 连接问题,最后会尝试拉取
hello-world镜像验证修复效果。如果使用阿里云镜像源,请替换为您的专属镜像地址(可在阿里云容器镜像服务获取)。

