Ubuntu中为curl和Docker配置代理
在Ubuntu环境下工作时,经常需要使用代理来访问网络资源,尤其在网络受限或需要翻墙访问时。本文介绍如何分别为curl
命令和Docker配置代理192.168.100.11:8000
。
一、curl命令代理配置
方法1:临时设置代理(仅当前命令有效)
直接使用--proxy
参数:
sh
curl --proxy http://192.168.100.11:8000 http://example.com
方法2:环境变量设置(影响当前终端会话)
设置临时环境变量,使当前会话中的所有curl请求使用代理:
sh
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
方法3:永久配置(所有终端生效)
修改~/.bashrc
或~/.zshrc
文件:
sh
echo 'export http_proxy="http://192.168.100.11:8000"' >> ~/.bashrc
echo 'export https_proxy="http://192.168.100.11:8000"' >> ~/.bashrc
source ~/.bashrc
方法4:使用.curlrc单独配置
为curl
单独配置代理:
sh
echo "proxy = http://192.168.100.11:8000" >> ~/.curlrc
二、Docker代理配置
Docker代理配置包括Docker守护进程(下载镜像等)、Docker客户端命令、以及容器内部网络访问。
1. 配置Docker守护进程
Docker下载镜像或构建镜像时可能需要代理:
- 创建并编辑配置文件:
sh
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
- 添加内容:
ini
[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"
- 重新加载并重启Docker:
sh
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证
systemctl show --property=Environment docker
2. 配置Docker客户端
影响Docker CLI命令(如docker build
、docker pull
):
- 编辑配置文件:
sh
mkdir -p ~/.docker
nano ~/.docker/config.json
- 添加以下内容:
json
{
"proxies": {
"default": {
"httpProxy": "http://192.168.100.11:8000",
"httpsProxy": "http://192.168.100.11:8000",
"noProxy": "localhost,127.0.0.1"
}
}
}
- 验证:
sh
docker info | grep -i proxy
3. Docker容器内代理设置
容器默认不会继承宿主机的代理设置,有以下方式:
运行时临时指定:
sh
docker run -e HTTP_PROXY="http://192.168.100.11:8000" \
-e HTTPS_PROXY="http://192.168.100.11:8000" \
-it ubuntu bash
Dockerfile内设置:
dockerfile
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 CLI配置)
同Docker客户端配置,所有新容器自动使用代理。
三、测试代理是否生效
运行容器进行验证:
sh
docker run --rm -it ubuntu env | grep -i proxy
# 或
docker run --rm -it ubuntu curl -I http://example.com
成功返回内容或HTTP头即为配置成功。
总结
- 临时设置:推荐给偶尔或单次使用。
- 永久设置:适合长期工作场景,避免重复配置。
- Docker守护进程代理:影响镜像下载,推荐配置。
- Docker容器代理:影响容器内部网络,视情况需要配置。
参考链接
