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