修改 Docker 容器的 http_proxy 和 https_proxy 可以通过几种方式实现。以下是一些常用的方法:
-
在运行容器时设置环境变量:
当你启动一个新的容器时,可以使用
-e
选项设置这些环境变量:docker run -e HTTP_PROXY=http://proxy.example.com:8080 -e HTTPS_PROXY=http://proxy.example.com:8080 your_image
-
对于已经运行的容器:
a. 使用
docker exec
命令:docker exec -it your_container_name /bin/bash export HTTP_PROXY=http://proxy.example.com:8080 export HTTPS_PROXY=http://proxy.example.com:8080
注意,这种方法只在当前会话中有效,容器重启后就会失效。
b. 修改容器的
/etc/environment
文件:docker exec -it your_container_name /bin/bash echo "HTTP_PROXY=http://proxy.example.com:8080" >> /etc/environment echo "HTTPS_PROXY=http://proxy.example.com:8080" >> /etc/environment
这种方法在容器重启后仍然有效。
-
在 Dockerfile 中设置:
如果你正在构建自己的镜像,可以在 Dockerfile 中设置这些环境变量:
ENV HTTP_PROXY http://proxy.example.com:8080 ENV HTTPS_PROXY http://proxy.example.com:8080
-
使用 Docker Compose:
如果你使用 Docker Compose,可以在
docker-compose.yml
文件中设置环境变量:yamlversion: '3' services: your_service: image: your_image environment: - HTTP_PROXY=http://proxy.example.com:8080 - HTTPS_PROXY=http://proxy.example.com:8080
-
修改 Docker 守护进程的配置:
你可以为 Docker 守护进程设置全局代理,这会影响所有容器。编辑
/etc/systemd/system/docker.service.d/http-proxy.conf
文件(如果不存在就创建它):[Service] Environment="HTTP_PROXY=http://proxy.example.com:8080" Environment="HTTPS_PROXY=http://proxy.example.com:8080"
然后重启 Docker 服务:
sudo systemctl daemon-reload sudo systemctl restart docker
注意事项:
- 确保使用正确的代理地址和端口。
- 某些应用程序可能使用小写的环境变量名(http_proxy, https_proxy),你可能需要同时设置大写和小写版本。
- 如果你的代理需要认证,格式应该是:
http://username:password@proxy.example.com:8080