Docker拉取镜像超时通常由以下原因导致:
# 修改或创建Docker配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
# 修改Docker DNS配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"dns": ["8.8.8.8", "114.114.114.114"]
}
EOF
# 重启Docker服务
sudo systemctl restart docker
对于常用镜像,可以直接从国内源拉取:
# 阿里云镜像
docker pull registry.cn-hangzhou.aliyuncs.com/library/镜像名:标签
# 中科大镜像
docker pull docker.mirrors.ustc.edu.cn/library/镜像名:标签
# 修改Docker守护进程配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"max-concurrent-downloads": 3,
"max-download-attempts": 5
}
EOF
# 重启Docker服务
sudo systemctl restart docker
# 为Docker设置代理
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
EOF
# 重新加载并重启
sudo systemctl daemon-reload
sudo systemctl restart docker
# 检查防火墙状态
sudo ufw status
# 如果启用,确保Docker相关端口开放
sudo ufw allow 2375/tcp
sudo ufw allow 2376/tcp
测试网络连接:
ping registry-1.docker.io
curl -v https://registry-1.docker.io/v2/
查看详细日志:
journalctl -u docker.service -n 50 --no-pager
docker pull -v 镜像名:标签
尝试清理缓存:
docker system prune
检查Docker存储驱动(某些驱动可能导致问题):
docker info | grep "Storage Driver"
如果以上方法都无法解决问题,可能需要考虑: - 联系网络管理员检查企业网络限制 - 使用VPN连接 - 在非高峰时段尝试拉取镜像