我支持在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
将代理传递为build-arg
我尝试了以下命令,但它确实有效。是否有其他方法可以自动传播代理设置,如文档中所述(参见上面的链接)
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
答案 0 :(得分:1)
我遇到了同样的问题。拉图像工作正常但配置容器不起作用。在这种情况下,解决方案是为Docker提供名为~/.docker/config.json
的配置文件,其中包含以下内容。
{
"proxies":
{
"default":
{
"httpProxy": "http://proxy.server....com:8080",
"httpsProxy": "https://proxy.server.....com:8080"
}
}
}
我希望这能解决你的问题。
答案 1 :(得分:0)
我努力让它发挥作用,但最终找到了适合我的解决方案。
我使用公司代理,并且在 Windows 上正确配置了 CNTLM,并在我的 docker 桌面设置中使用地址 127.0.0.1:3128
链接。我的 docker 在 WSL2 下运行。
这里的神奇技巧是将您的容器代理链接到 docker 内部代理 host.docker.internal
。
我没有找到为什么我不能像我为 docker 桌面配置所做的那样与本地主机代理 (127.0.0.1:3128
) 连接,我猜 docker 运行一个内部代理作为访问 Windows 网络的网关。