Leo*_* AB 6 dns proxy docker alpine-linux
上下文: 操作系统:Windows 10 Pro;Docker 版本:18.09.0(构建 4d60db4);在企业代理的背后,使用CNTLM来解决这个问题。(目前正在拉/运行图像工作正常)
问题: 我试图构建以下 Dockerfile:
FROM alpine:3.5
RUN apk add --update \
python3
RUN pip3 install bottle
EXPOSE 8000
COPY main.py /main.py
CMD python3 /main.py
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
Sending build context to Docker daemon 11.26kB
Step 1/6 : FROM alpine:3.5
---> dc496f71dbb5
Step 2/6 : RUN apk add --update python3
---> Running in 7f5099b20192
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.5/main: could not connect to server (check repositories file)
WARNING: Ignoring APKINDEX.c51f8f92.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.5/community: could not connect to server (check repositories file)
WARNING: Ignoring APKINDEX.d09172fd.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
python3 (missing):
required by: world[python3]
The command '/bin/sh -c apk add --update python3' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)
我能够从浏览器访问 URL,因此服务器本身没有问题。
我怀疑这与代理没有传播到容器有关,如本问题所述,因为我在运行时也没有得到 http_proxy 行docker run alpine env。但是,在将代理输入配置文件后,它终于出现了。然而问题仍然存在。
我也尝试按照此处的说明更改DNS ,但问题仍未解决。
我终于设法解决了这个问题,罪魁祸首是我在 CNTLM 中的设置。有关背景故事,请查看此帖子。
此问题的根本原因是 .docker 容器无法从 VM 内部访问 Internet,因为CNTLM.ini.
通常 CNTLM127.0.0.1:3128默认侦听转发代理。我遵循默认设置,因此将 Docker 上的代理设置(对于守护进程 -通过 GUI,对于容器 -通过config.json)也设置到该地址和端口中。事实证明,这个“本地主机”不适用于 docker 所在的虚拟机,因为虚拟机有自己的 localhost。长话短说,解决方案是10.0.75.1:3128在以下所有位置将该地址更改为 dockerNAT IP 地址( ):
CNTLM.ini(Listen在线上。其实如果我们把CNTLM也用在其他用途上,也可以提供多Listen条线)Docker 容器config.json(通常在 中C:\Users\<username>\.docker),通过添加以下几行:
"proxies":
{
"default":
{
"httpProxy": "http://10.0.75.1:3128",
"httpsProxy": "http://10.0.75.1:3128",
"noProxy": <your no_proxy>
}
}
Run Code Online (Sandbox Code Playgroud)还检查这些相关的帖子:
| 归档时间: |
|
| 查看次数: |
3542 次 |
| 最近记录: |