我正在构建一个 Docker 容器,该容器在发送 HTTP 请求时应使用代理服务器。不幸的是,我无法让它工作 - 即使凭据正确,我也无法从容器内部对代理进行身份验证。
预期结果
curl https://api.myip.com
返回带有代理 IP 的 JSON 响应
实际结果:
curl https://api.myip.com
返回curl: (56) Received HTTP code 407 from proxy after CONNECT
我尝试过的:
- 设置 HTTP_PROXY 环境变量(与 HTTPS 环境相同)
- 在 /etc/apt/apt.conf 中添加“Acquire::http::Proxy”字符串(https 也一样)
- 尝试了不同的配置(仅 ENV、仅 apt.conf 文件、两者)
我检查了:
- /etc/apt/apt.conf 包含所需的行(如下所示)
- 容器内的 ENV 已正确设置
- 代理在容器外正常工作
- 代理身份验证通过容器外部运行的浏览器正常工作(授权成功)
- docker 网络正常工作(不使用代理时没有问题)
我的apt.conf:
Acquire::http::Proxy "http://<my_login>:<my_pass>@<proxy_ip>:<proxy_port>/";
Acquire::https::Proxy "https://<my_login>:<my_pass>@<proxy_ip>:<proxy_port>/";
Acquire::socks::Proxy "socks://<my_login>:<my_pass>@<proxy_ip>:<proxy_port>/";
我的Dockerfile:
from ubuntu:latest
COPY ./rss/apt.conf /apt.conf
ENV HTTP_PROXY=<ip>:<port>
ENV HTTPS_PROXY=<ip>:<port>
RUN apt update && apt install -y curl
RUN cat /apt.conf >> /etc/apt/apt.conf
ENTRYPOINT ["sleep","1000"]
Docker 版本:
Docker version 20.10.8, build 3967b7d