既然你已经配置了镜像加速器,且防火墙也确认没有问题,下面是一些更详细的步骤和方法,你可以继续排查:
1. 确认加速器配置是否生效
首先,你可以确认一下 Docker 配置文件 daemon.json
是否正确,确保配置正确格式,且确实在生效。
-
编辑
/etc/docker/daemon.json
文件,确保内容如下:{ "registry-mirrors": ["https://sn9jcvzu.mirror.aliyuncs.com"] }
-
然后重新启动 Docker 服务:
sudo systemctl restart docker
-
使用
docker info
命令来确认镜像加速器是否正确配置:docker info | grep -i "Registry Mirrors"
如果配置正确,应该能看到类似这样的输出:
Registry Mirrors: https://sn9jcvzu.mirror.aliyuncs.com/
如果没有看到加速器,可能说明配置文件没有生效。你可以尝试再次检查文件格式,确保没有额外的逗号或格式错误。
2. 测试镜像加速器
可以尝试拉取其他镜像,确认是否是特定镜像的问题,或者加速器本身的连接是否正常。
例如,试着拉取一个小的常用镜像(比如 hello-world
):
docker pull hello-world
如果这个也无法拉取,说明加速器仍然没有生效,可能需要重新检查加速器地址或者网络设置。
3. 调整 DNS 配置
有时候,Docker 客户端的 DNS 解析可能会出现问题。你可以尝试修改 /etc/docker/daemon.json
文件,强制 Docker 使用公共 DNS 服务器:
{
"registry-mirrors": ["https://sn9jcvzu.mirror.aliyuncs.com"],
"dns": ["223.5.5.5", "8.8.8.8"]
}
然后重启 Docker:
sudo systemctl restart docker
这将使 Docker 客户端使用阿里云 DNS 和 Google 的 DNS 来解析镜像地址。
4. 检查网络连接
-
尝试使用
curl
测试能否直接访问 Docker Hub 的镜像地址:curl -v https://registry-1.docker.io/v2/
如果能够连接,应该返回一个
401 Unauthorized
或其他相应信息;如果连接不上,则表明你可能存在网络连通性问题,可能需要调整阿里云机器的网络配置或重新检查阿里云的安全组、NAT 配置等。
5. 阿里云安全组设置
确保阿里云的安全组允许访问外部的 docker.io
地址。你可以在阿里云控制台检查一下机器的安全组配置,确保 TCP 端口 443(HTTPS)对外是开放的。
6. Docker 版本升级
如果你的 Docker 版本比较老,也可能导致某些网络问题。可以尝试升级 Docker 至最新稳定版本:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
然后重新启动 Docker:
sudo systemctl restart docker
总结
你可以通过以下几个步骤进一步排查:
- 确认镜像加速器配置是否生效。
- 使用其他镜像进行测试,检查加速器是否工作正常。
- 强制 Docker 使用公共 DNS。
- 使用
curl
测试是否能直接访问registry-1.docker.io
。 - 检查阿里云的安全组是否允许访问外部网络。
如果这些方法都没有解决问题,请尝试查看https://www.coderjia.cn/archives/dba3f94c-a021-468a-8ac6-e840f85867ea
添加还可以访问的docker地址