Skip to content

解决 Docker 拉取容器镜像超时的问题

【问题】

在 2024年6月,由于非常隐晦的原因,国内各大容器镜像服务提供方限制或关闭服务。这导致了在大陆的 IT 工程师拉取镜像时出现超时的情况,无疑对工作产生了很大的影响。

24092101.png

24092102.png

【解决】

方案一:配置 Docker 镜像加速器

针对 Docker 客户端版本大于 1.10.0 的用户 您可以通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器:

如果在拉取镜像时发现又超时了,可以尝试继续更换其他镜像加速器地址。

bash
sudo vim /etc/docker/daemon.json

# 添加以下内容
{
	"registry-mirrors": [
	    "https://docker.1ms.run/", 
	    "https://hub.rat.dev/", 
	    "https://docker.1panel.live/", 
	    "https://docker.m.daocloud.io/"
	]
}

sudo systemctl daemon-reload
sudo systemctl restart docker

方案二:配置代理,拉取镜像

已经使用 Docker 镜像加速器时,无需配置代理。

创建配置文件:

shell
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

添加配置:

shell
[Service]
Environment="HTTP_PROXY=socks5://user:pass@127.0.0.1:1080"
Environment="HTTPS_PROXY=socks5://user:pass@127.0.0.1:1080"

重启 Docker:

shell
sudo systemctl daemon-reload
sudo systemctl restart docker

查看环境变量:

shell
sudo systemctl show --property=Environment docker

方案三:通过中介设备传送镜像

使用一台能够正常拉取 Docker Hub 镜像的设备,将镜像拉取到本地,然后传送到无法拉取镜像的设备上。 例如以下示例中规定:A 设备可以正常拉取 Docker Hub 镜像,B 设备无法拉取 Docker Hub 镜像。示例中将 mysql:8.0.33 镜像从 A 设备传送至 B 设备。

24092103.png

  1. A 设备压缩镜像

在 A 设备中的 a-demo 目录下,将 mysql:8.0.33 镜像保存为 mysql:8.0.33.tar。压缩后的 tar 文件会被保存在执行命令的当前目录下:

shell
docker save mysql:8.0.33 > mysql:8.0.33.tar

24092201.png

  1. A 设备传送镜像至 B 设备的 /b-demo 目录下
shell
sftp root@[ip]
put /Users/hayden/Desktop/a-demo/mysql:8.0.33.tar /b-demo/

24092202.png

24092203.png

  1. B 设备加载镜像:
shell
docker load < mysql:8.0.33.tar

24092204.png

编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!