在某些网络环境中,比如网络 NAT ,或者其他复杂的网络中,需要使用代理才能访问互联网。Docker 的代理配置略显复杂,在 Linux 中,Docker 默认不会自动使用系统代理进行镜像构建和下载。

dockerd 代理

在执行 docker pull 或者 docker build 等命令时,是由 Docker 的守护进程 dockerd 来执行的。

在大多数基于 systemd 的 Linux 发行版中,dockerd 的运行环境通常是由 systemd 来配置和管理的。

因此,需要在 systemd 中配置 dockerd 的环境:

 2. 创建 Docker 服务的配置目录

sudo mkdir -p /etc/systemd/system/docker.service.d

 4. 然后创建配置文件 proxy.conf

sudo touch /etc/systemd/system/docker.service.d/proxy.conf

 6. 在文件中添加以下内容

[Service]
Environment="HTTP_PROXY=http://proxy.example:port"
Environment="HTTPS_PROXY=http://proxy.example:port"
Environment="NO_PROXY=localhost,127.0.0.1"

其中,proxy.example:port 需要替换成你实际使用的代理地址和端口

 8. 重新加载 systemd 配置,并重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

Container 代理

在容器运行阶段,如果需要代理上网,则需要配置 ~/.docker/config.json

{
    "proxies": {
        "default": {
            "httpProxy": "http://proxy.example:port",
            "httpsProxy": "http://proxy.example:port",
            "noProxy": "localhost,127.0.0.1"
        }
    }
}