# Docker daemon proxy 设置
> https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
使用 Docker 过程中总会遇到一些镜像超时,如 `gcr.io` 下的镜像,我们就无法通过普通的 registry mirrors 方便地拉取镜像。所以我们需要为我们当前 docker 进程配置 HTTP/HTTPS proxy。
Docker 守护进程可以使用 HTTP_PROXY,HTTPS_PROXY 和 NO_PROXY 三个环境变量来配置 HTTP 或 HTTPS 的代理,但是这三个环境变量必须在进程启动之前设置好,无法在 /etc/docker/daemon.json 中配置。
这里打算采用覆盖默认的 docker.service 的方式来配置代理。
## 配置方法
1. 创建 /etc/systemd/system/docker.service.d 文件夹:
```bash
sudo mkdir -p /etc/systemd/system/docker.service.d
```
1. 在该目录下创建文件 /etc/systemd/system/docker.service.d/http-proxy.conf 并添加 PROXY 相关的变量:
```bash
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
```
文本中的链接请自行替换:
```service
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
```
1. 刷新 service 并重启 Docker
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker
```
1. 验证是否设置成功
```bash
systemctl show --property=Environment docker
```
```txt
Environment=HTTP_PROXY=http://proxy.example.com:80 HTTPS_PROXY=https://proxy.example.com:443 NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp
```
## 最后
如果你没有 http proxy server,但有 socks 连接,那么推荐使用 [https://github.com/oyyd/http-proxy-to-socks](https://github.com/oyyd/http-proxy-to-socks) 运行一个 http proxy server。

Docker daemon proxy 设置