在 Linux 上配置 Docker 使用系统代理
在某些网络环境中,比如网络 NAT ,或者其他复杂的网络中,需要使用代理才能访问互联网。Docker 的代理配置略显复杂,在 Linux 中,Docker 默认不会自动使用系统代理进行镜像构建和下载。
dockerd 代理
在执行 docker pull 或者 docker build 等命令时,是由 Docker 的守护进程 dockerd 来执行的。
在大多数基于 systemd 的 Linux 发行版中,dockerd 的运行环境通常是由 systemd 来配置和管理的。
因此,需要在 systemd 中配置 dockerd 的环境:
1. 创建 Docker 服务的配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d
2. 然后创建配置文件 proxy.conf
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
3. 在文件中添加以下内容
[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 需要替换成你实际使用的代理地址和端口
4. 重新加载 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"
}
}
}