运行 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 存储库的包的情况下很有用
我在代理后面,我需要通过 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 存储库的包的情况下很有用