sudo docker pull 是由 Docker 守护进程(dockerd) 执行的。Docker 守护进程是一个独立的系统服务,它并不会读取你当前终端的环境变量。
针对 Ubuntu 24.04 系统,有以下几种解决办法:
方法一:配置 Docker 守护进程代理(最推荐,支持 SOCKS5)
这是解决 docker pull 失败的根本方法。你需要为 Docker 服务创建专门的代理配置文件。
创建配置目录:
sudo mkdir -p /etc/systemd/system/docker.service.d创建代理配置文件:
使用你自己的代理地址(192.168.18.137:7890)。建议使用socks5h,这样 DNS 解析也会通过代理,防止 DNS 污染。sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf粘贴以下内容:
[Service] Environment="HTTP_PROXY=socks5h://192.168.1.1:8000" Environment="HTTPS_PROXY=socks5h://192.168.1.1:8000" Environment="NO_PROXY=localhost,127.0.0.1"保存并重启 Docker 服务:
sudo systemctl daemon-reload sudo systemctl restart docker验证配置是否生效:
执行sudo docker info | grep Proxy,看到输出中有你设置的代理地址即可。然后再尝试执行pull命令。
方法二:使用国内镜像加速器(2026年最新现状)
由于国内网络环境波动,许多老旧的公开加速器(如中科大、网易等)已失效或受限。如果方法一仍有问题,可以尝试使用目前较稳定的第三方镜像源。
修改 /etc/docker/daemon.json 文件:
sudo nano /etc/docker/daemon.json
添加或修改为以下内容(请注意 JSON 格式):
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://dockerproxy.com",
"https://docker.m.daocloud.io"
]
}
保存后重启:sudo systemctl restart docker。
方法三:使用 docker-drag 或 skopeo(无需 Docker 进程)
如果你不想修改 Docker 配置,可以使用一些第三方工具直接下载镜像包,然后再导入。
- 使用 Skopeo (推荐):
skopeo是一个可以直接通过命令行下载镜像的工具,它会直接读取终端的环境变量。# 安装 sudo apt update && sudo apt install skopeo -y # 导出环境变量 export https_proxy="http://192.168.18.137:7890" # 下载镜像为 tar 包 skopeo copy docker://rocm/dev-ubuntu-24.04:7.2-complete docker-archive:rocm_image.tar # 导入 Docker sudo docker load -i rocm_image.tar
常见排查点:
- 防火墙: 确保
192.168.18.137这台代理机器的7890端口对你的电脑是开放的。 - 代理软件设置: 如果你使用的是 Clash 等工具,请确保开启了“允许局域网连接”(Allow LAN)。
- DNS 延迟: ROCm 的镜像非常大(通常几 GB 到十几 GB),如果代理不稳定容易超时。建议优先使用方法一中的
socks5h。