运行 apt-get 与 Dockerfile 中的代理

run apt-get with proxy in Dockerfile

我在代理后面,我需要通过 apt-get 安装一些东西。

我最好的是这个

ARG PROXY
ENV http_proxy=$PROXY
ENV https_proxy=$PROXY
RUN apt-get update -y && apt-get -y install ...
ENV http_proxy=
ENV https_proxy=

问题是我之后需要取消设置那些环境变量。

知道如何在不到 5 层的情况下做到这一点吗?

你需要使用build-time variables (–build-arg).

此标志允许您在 Dockerfile 的 运行 指令中传递像常规环境变量一样访问的构建时变量。此外,这些值不会像 ENV 值那样保留在中间或最终图像中。

所以,你的 Dockerfile 只有 3 行:

ARG http_proxy
ARG https_proxy
RUN apt-get update -y && apt-get -y install ...

并且您只需要在镜像构建期间定义构建时变量http_proxy and/or https_proxy

$ docker build --build-arg http_proxy=http://<proxy_ip>:<proxy_port> --build-arg https_proxy=https://<proxy_ip>:<proxy_port> . 

同时使用 build time variables (–build-arg), you can add at the beginning (before apt-get update) apt proxy 配置:

...
ARG APT_PROXY
RUN echo "Acquire::http::Proxy \"$APT_PROXY\";" | tee /etc/apt/apt.conf.d/01proxy
RUN apt-get update -y && apt-get -y install ...
...

这在您只想缓存来自 APT 存储库的包的情况下很有用