Docker,在 Docker 文件 'apk add' 中添加新包时,企业代理(使用 PX 反向代理)无法进行 DNS 查找

Docker, Corporate Proxy (using PX Reverse Proxy) fails to do DNS lookup when adding new packages within Dockerfile with 'apk add'

我开始在公司内部使用 Docker 工作,但我的 Docker 桌面出现网络问题。

我的系统设置是:

我只是尝试按照 Docker 的说明对 getting-started 中的示例 node.js 应用程序进行 docker 化,但由于 RUN apk add...(见下文)

步骤。

首先尝试: docker build -t getting-started . 通常应该做简单的事情。

结果是:RUN apk add --no-cache python2 g++ make 指令中的 DNS 查找错误。 从 Docker 文件内部调用互联网似乎不是一件小事 :-(.

输出:

第二次尝试docker build -t getting-started . --build-arg HTTP_PROXY=http://localhost:3128 --build-arg HTTPS_PROXY=http://localhost:3128

这次我在同一步骤中遇到 网络错误(检查 Internet 连接和防火墙)

输出:

我的Docker文件看起来和教程中的一样。

FROM node:12-alpine
# Adding build tools to make yarn install work on Apple silicon / arm64 machines
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]

在同一目录中,我有示例应用程序,正如提到的入门教程中所述。

px.ini 文件:

[proxy]
server = my.company.com:8080
port = 3128
listen = 127.0.0.1
gateway = 1
hostonly = 0
noproxy = 127.0.0.*,10.*.*.*,192.168.*.*
allow = *.*.*.*
username= de\username
 
[settings]
workers = 3
threads = 8
idle = 30
socktimeout = 20.0
foreground = 0
log = 0

Docker 桌面代理配置:

网络上的许多研究,例如在 Whosebug、论坛等地方。我发现这很可能是网络配置问题的提示。

有人知道我在这里做错了什么吗? Docker 如何正确设置公司代理和反向代理作为 CNTLM 或 PX 代理?

我已经通过在 Dockerfile 中使用环境变量解决了我的问题。

    FROM node:12-alpine

    ARG http_proxy=http://host.docker.internal:3128
    ARG https_proxy=http://host.docker.internal:3128

    # Adding build tools to make yarn install work on Apple silicon / arm64 
    machines
    RUN apk add --no-cache python2 g++ make
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "src/index.js"]