连接到基于 ubuntu 的 docker 容器内的代理服务器时如何进行身份验证?

连接到基于 ubuntu 的 docker 容器内的代理服务器时如何进行身份验证?

我正在构建一个 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

相关内容