本文将详细介绍如何根据系统代理配置,正确设置 Docker 的代理环境变量,使其能够通过代理服务器进行网络访问。
一、查看系统代理配置
首先,我们查看了系统的代理配置:
以下是图片内容的文字描述:
Proxy 设置
- Network Proxy: 已开启
- Configuration: 手动 (Manual)
HTTP Proxy
- URL:
127.0.0.1
- Port:
20171
HTTPS Proxy
- URL: (未填写)
- Port:
0
FTP Proxy
- URL: (未填写)
- Port:
0
SOCKS Host
- URL:
127.0.0.1
- Port:
20170
Ignored Hosts
localhost, 127.0.0.0/8, ::1
根据配置界面,可以看到:
- Network Proxy: 已经启用。
- HTTP Proxy: 代理服务器地址是
127.0.0.1
,端口是20171
。 - SOCKS Host: 代理服务器地址是
127.0.0.1
,端口是20170
。
为了确保 Docker 可以通过该代理进行网络访问,我们需要将这些配置应用到 Docker 的环境变量中。
二、为 Docker 配置代理
1. 创建 Docker 代理配置目录
首先,为 Docker 服务创建一个代理配置目录(如果不存在):
sudo mkdir -p /etc/systemd/system/docker.service.d
2. 创建并编辑 http-proxy.conf
配置文件
使用 vim
或其他编辑器创建并编辑 /etc/systemd/system/docker.service.d/http-proxy.conf
文件:
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
在文件中添加以下内容,根据系统代理设置进行了详细配置:
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:20171/"
Environment="HTTPS_PROXY=http://127.0.0.1:20171/"
Environment="NO_PROXY=localhost,127.0.0.0/8,::1"
配置说明:
HTTP_PROXY
:指定 HTTP 代理地址,使用127.0.0.1:20171
,与系统代理设置一致。HTTPS_PROXY
:指定 HTTPS 代理地址,仍然使用127.0.0.1:20171
,确保 Docker 可以通过代理进行 HTTPS 请求。NO_PROXY
:指定不需要通过代理的地址列表,包括本地主机localhost
、127.0.0.0/8
和 IPv6 本地地址::1
。
3. 重新加载 systemd 并重启 Docker 服务
配置完成后,重新加载 systemd 配置,并重启 Docker 服务,使更改生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 验证代理配置是否生效
使用以下命令验证 Docker 是否正确使用了代理设置:
docker info | grep -i proxy
如果配置成功,你应该会看到类似以下的输出:
HTTP Proxy: http://127.0.0.1:20171/
HTTPS Proxy: http://127.0.0.1:20171/
No Proxy: localhost,127.0.0.0/8,::1
四、使用
通过上述步骤,我们成功将系统代理设置应用到了 Docker 中,使得 Docker 可以通过指定的代理服务器进行网络访问。在复杂网络环境中,这种配置可以有效地解决 Docker 访问网络超时、无法连接 Docker Hub 等问题。
进而我们可以正常使用 docker 命令而不用担心网络问题了:
docker search nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04
docker image pull nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04
标签:127.0,0.1,配置,ubuntu24.04,代理,访问,Proxy,Docker
From: https://www.cnblogs.com/li508q/p/18444525