在Ubuntu环境下工作时,经常需要使用代理来访问网络资源,尤其在网络受限或需要访问时。本文介绍如何分别为curl
命令和Docker配置代理192.168.100.11:8000
。
直接使用--proxy
参数:
curl --proxy http://192.168.100.11:8000 http://example.com
设置临时环境变量,使当前会话中的所有curl请求使用代理:
export http_proxy="http://192.168.100.11:8000"
export https_proxy="http://192.168.100.11:8000"
# 验证
echo $http_proxy
curl http://example.com
修改~/.bashrc
或~/.zshrc
文件:
echo 'export http_proxy="http://192.168.100.11:8000"' >> ~/.bashrc
echo 'export https_proxy="http://192.168.100.11:8000"' >> ~/.bashrc
source ~/.bashrc
为curl
单独配置代理:
echo "proxy = http://192.168.100.11:8000" >> ~/.curlrc
Docker代理配置包括Docker守护进程(下载镜像等)、Docker客户端命令、以及容器内部网络访问。
Docker下载镜像或构建镜像时可能需要代理:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.100.11:8000"
Environment="HTTPS_PROXY=http://192.168.100.11:8000"
Environment="NO_PROXY=localhost,127.0.0.1"
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证
systemctl show --property=Environment docker
影响Docker CLI命令(如docker build
、docker pull
):
mkdir -p ~/.docker
nano ~/.docker/config.json
{
"proxies": {
"default": {
"httpProxy": "http://192.168.100.11:8000",
"httpsProxy": "http://192.168.100.11:8000",
"noProxy": "localhost,127.0.0.1"
}
}
}
docker info | grep -i proxy
容器默认不会继承宿主机的代理设置,有以下方式:
docker run -e HTTP_PROXY="http://192.168.100.11:8000" \
-e HTTPS_PROXY="http://192.168.100.11:8000" \
-it ubuntu bash
ENV HTTP_PROXY="http://192.168.100.11:8000"
ENV HTTPS_PROXY="http://192.168.100.11:8000"
ENV NO_PROXY="localhost,127.0.0.1"
同Docker客户端配置,所有新容器自动使用代理。
运行容器进行验证:
docker run --rm -it ubuntu env | grep -i proxy
# 或
docker run --rm -it ubuntu curl -I http://example.com
成功返回内容或HTTP头即为配置成功。