使用代理拉取 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