【问题标题】:Docker at Windows 10 proxy propagation to containers not workingDocker 在 Windows 10 代理传播到容器不起作用
【发布时间】:2023-03-19 10:46:01
【问题描述】:

我支持合作代理并在 Windows 10 上运行 docker。我已根据 documentation here 在 docker 上设置代理。

我可以提取图像,但这些代理设置不会传播到容器,例如当我运行 alpine env 时,它不显示代理配置。以下是我的输出

λ docker run alpine env                                          
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  HOSTNAME=14fca5bee12f                                            
  HOME=/root                                                       

以下是文档中的预期输出。

在构建以下 docker 文件时,我从 alpine 容器中收到连接错误

Docker 版本

Docker version 17.12.0-ce, build c97c6d6

DockerFile

FROM alpine:latest
ADD HelloWorld.class HelloWorld.class
RUN apk --update add openjdk8-jre
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "HelloWorld"]

错误

Step 3/4 : RUN apk --update add openjdk8-jre                                                                      
 ---> Running in 1205b24d5044                                                                                     
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz                                       
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.7/main: could not connect to server (check repositories file)      
WARNING: Ignoring APKINDEX.70c88391.tar.gz: No such file or directory                                             
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz                                  
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.7/community: could not connect to server (check repositories file) 
WARNING: Ignoring APKINDEX.5022a8a2.tar.gz: No such file or directory                                             
ERROR: unsatisfiable constraints:                                                                                 
  openjdk8-jre (missing):                                                                                         
    required by: world[openjdk8-jre]                                                                              
The command '/bin/sh -c apk --update add openjdk8-jre' returned a non-zero code: 1                                

将代理作为构建参数传递

我尝试了以下命令,它成功了。是否有任何其他方法可以自动传播文档中提到的代理设置(请参阅上面的链接)

docker build --tag "docker-hello-world:latest" . --build-arg http_proxy=http://<username>:<password>@proxy_address:proxy_port/ --build-arg https_proxy=http://<username>:<password>@proxy_address:proxy_port/ --build-arg no_proxy=localhost,127.0.0.1

【问题讨论】:

  • 你没有提到你的docker version
  • 用 docker 版本更新了帖子
  • 您是使用使用系统代理(如果可用)还是手动代理配置
  • 我已经在docs.docker.com/docker-for-windows/#proxies 中提到的docker设置上设置了代理另外我还设置了名为proxy和https_proxy的系统环境变量
  • 对话框中有三个选项。您能否确认 手动代理配置 不起作用?

标签: docker proxy windows-10 containers


【解决方案1】:

我遇到了同样的问题。拉取图像正常,但配置容器不起作用。在这种情况下,解决方案是为 Docker 提供一个名为 ~/.docker/config.json 的配置文件,其内容如下。

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://proxy.server....com:8080",
     "httpsProxy": "https://proxy.server.....com:8080"
   }
 }
}

我希望这能解决您的问题。

【讨论】:

    【解决方案2】:

    我努力让它发挥作用,但最终找到了一个可行的解决方案。

    我在公司代理后面,并且在 Windows 上正确配置了 CNTLM,并在我的 docker 桌面设置中链接地址为127.0.0.1:3128。我的 docker 在 WSL2 下运行。

    这里的神奇技巧是将您的容器代理链接到 docker 内部代理 host.docker.internal

    我没有找到为什么我无法像在 docker 桌面配置中那样连接到 localhost 代理 (127.0.0.1:3128),我猜 docker 运行一个内部代理作为访问 Windows 网络的网关。

    【讨论】:

      猜你喜欢
      • 2018-02-03
      • 2020-06-01
      • 2021-11-20
      • 2018-01-21
      • 1970-01-01
      • 2020-11-17
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多