Skip to content

使用代理拉取 Docker Hub 镜像

目前在国内没办法直接访问 Docker Hub,也没有可靠镜像站点。为了保证生产效率和稳定,能直接用代理解决访问问题是效率最高的方法。

前言

  • 2023 年 5 月,Docker Hub 在中国大陆无法访问;
  • 2024 年 6 月,国内的 Docker Hub 镜像皆因「不可抗力」、「接上级要求」关闭。

直接代理全部流量是一种选择,但是这对分流规则的细度要求太高,服务器上的很多其他大流量应用如果没能被正确分流,代理流量可能就都被浪费了,所以我们要单独对 Docker 拉取镜像的操作进行代理设置。

具体操作

切换到 root 用户:

sudo -i

创建相关目录/文件:

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

http-proxy.conf 中输入以下内容,注意修改代理地址:

[Service]
Environment="HTTP_PROXY=http://192.168.1.2:7890"
Environment="HTTPS_PROXY=http://192.168.1.2:7890"
Environment="NO_PROXY=localhost,127.0.0.1"

重启相关服务:

systemctl daemon-reload
systemctl restart docker

验证:

sudo systemctl show --property=Environment docker

附:群晖(DSM 7.0+)操作方法

群晖进行了一些魔改,主要是名字上的区别(Docker 变成了 Container Manager)

切换到 root 用户:

sudo -i

创建相关目录/文件:

mkdir -p /etc/systemd/system/pkg-ContainerManager-dockerd.service.d
vim /etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf

http-proxy.conf 中输入以下内容,注意修改代理地址:

[Service]
Environment="HTTP_PROXY=http://192.168.1.2:7890"
Environment="HTTPS_PROXY=http://192.168.1.2:7890"
Environment="NO_PROXY=localhost,127.0.0.1"

重启相关服务:

systemctl daemon-reload
systemctl restart pkg-ContainerManager-dockerd.service

验证:

systemctl show --property=Environment pkg-ContainerManager-dockerd.service