Ubuntu 安装的docker-compose拉取镜像失败问题处理办法
Ubuntu 安装的docker-compose拉取镜像失败问题处理办法
文章目录
- 一、第一步: 检查并清理代理配置
- 二、第二步: 检查Docker服务的代理配置
- 三、第三步: 检查DNS配置
- 四、第四步: 使用国内镜像加速器
- 五、第五步: 检查防火墙
- 六、第六步: 禁用 IPv6
- 七、第七步: 增加 Docker 的超时设置
- 七、总结
一、第一步: 检查并清理代理配置
首先检查系统环境变量中是否设置了代理:
env | grep -i proxy
如果输出中包含 http_proxy=http://127.0.0.1:80 或类似的设置,你需要清除这些环境变量。临时清除可以使用
unset http_proxy
unset https_proxy
unset HTTP_PROXY
unset HTTPS_PROXY
要永久移除这些配置,请检查以下文件并删除相关的代理设置行:
~/.bashrc
~/.profile
/etc/environment
二、第二步: 检查Docker服务的代理配置
sudo systemctl show docker --property Environment
如果输出显示了代理设置(如 Environment=HTTP_PROXY=http://127.0.0.1:80),你需要清除这些配置,使用命令如下
# 检查并删除Docker的代理配置文件
sudo rm -f /etc/systemd/system/docker.service.d/http-proxy.conf# 重新加载systemd配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
三、第三步: 检查DNS配置
DNS解析问题也可能导致连接失败
cat /etc/resolv.conf
确保DNS服务器(如你的默认路由 192.168.233.2)能正确解析域名。你可以尝试添加一个可靠的公共DNS作为备用
# 在/etc/resolv.conf文件中添加Google公共DNS
nameserver 8.8.8.8
同时,修改Docker的DNS配置以确保它使用正确的DNS服务器:
# 创建或编辑Docker的daemon.json文件
sudo nano /etc/docker/daemon.json
添加以下内容(如果文件已存在,只需添加dns项):
{"dns": ["192.168.233.2", "8.8.8.8"]
}
四、第四步: 使用国内镜像加速器
由于网络连接问题,直接从Docker Hub拉取镜像可能较慢或不稳定。你可以配置国内镜像加速器来改善体验
# 编辑Docker的daemon.json文件
sudo nano /etc/docker/daemon.json
用vim 也行
添加或合并以下内容(将registry-mirrors替换为你的加速器地址):
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
重启Docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
五、第五步: 检查防火墙
如果你的系统启用了防火墙或安全软件,可能会阻止Docker 访问外部服务器。你可以暂时禁用防火墙,测试是否为防火墙问题
暂时禁用UFW(Ubuntu 防火墙):
sudo ufw disable
六、第六步: 禁用 IPv6
在某些网络环境中,IPv6 可能导致连接问题。你可以尝试禁用 Docker 中的 IPv6 配置。
编辑Docker 配置文件 /etc/docker/daemon.json:
sudo nano /etc/docker/daemon.json
添加或修改以下内容:
{
"ipv6": false
}
保存并退出,重启Docker 服务:
sudo systemctl restart docker
七、第七步: 增加 Docker 的超时设置
有时网络较慢会导致连接超时,增加Docker 的超时时间可能有助于解决问题。可以在 Docker 配置文件中增加超时设置。
编辑/etc/docker/daemon.json 文件
sudo nano /etc/docker/daemon.json
添加以下配置
{
"max-concurrent-downloads": 3,
"features": {
"buildkit": true}
}
保存并退出,然后重启Docker:
sudo systemctl restart docker
七、总结
笔者最终/etc/docker/daemon.json 文件的内容为
{"registry-mirrors": ["https://docker.m.daocloud.io","https://mirror.ccs.tencentyun.com","https://docker.1ms.run","https://dockerproxy.net","https://.mirror.aliyuncs.com"],"ipv6": false,"max-concurrent-downloads": 3,"features": {"buildkit": true}
}
/etc/resolv.conf 内容为
nameserver 127.0.0.53 #默认就有
options edns0 trust-ad #默认就有
search localdomain #默认就有
nameserver 8.8.8.8
nameserver 8.8.4.4