gpt4 book ai didi

docker - 如何在代理后面的 dockerfile 中运行 `apt-get`?

转载 作者:IT老高 更新时间:2023-10-28 12:34:08 27 4
gpt4 key购买 nike

我正在使用 docker(版本 0.8.1,构建 a1598d1)运行虚拟机(Ubuntu 13.10)。我正在尝试使用 dockerfile 构建图像。首先,我想更新软件包(使用下面的代码 - 代理被混淆)但 apt-get 超时并出现错误:Could not resolve 'archive.ubuntu.com'

FROM ubuntu:13.10
ENV HTTP_PROXY <HTTP_PROXY>
ENV HTTPS_PROXY <HTTPS_PROXY>
RUN export http_proxy=$HTTP_PROXY
RUN export https_proxy=$HTTPS_PROXY
RUN apt-get update && apt-get upgrade

我还在主机系统中运行了以下内容:

sudo HTTP_PROXY=http://<PROXY_DETAILS>/ docker -d &

主机能够毫无问题地运行 apt-get

如何更改 dockerfile 以允许它从容器内访问 ubuntu 服务器?

更新

我在 CentOS 中运行了代码(将 FROM ubuntu:13.10 更改为 FROM centos)并且运行良好。这似乎是 Ubuntu 的问题。

最佳答案

更新:

ENV 中的环境变量大小写错误。正确的一个是http_proxy。你的例子应该是:

FROM ubuntu:13.10
ENV http_proxy <HTTP_PROXY>
ENV https_proxy <HTTPS_PROXY>
RUN apt-get update && apt-get upgrade

FROM centos
ENV http_proxy <HTTP_PROXY>
ENV https_proxy <HTTPS_PROXY>
RUN yum update

在 ENV 中指定的所有变量都添加到每个 RUN 命令之前。每个 RUN 命令都是在自己的容器/环境中执行的,因此它不会从以前的 RUN 命令继承变量!

注意:不需要使用代理调用 docker daemon 来工作,但如果你想拉图像等,你也需要为 docker deamon 设置代理。您可以在 Ubuntu 的 /etc/default/docker 中为守护进程设置代理(不影响容器设置)。


此外,如果您在主机上运行代理(即 localhost,127.0.0.1),也会发生这种情况。主机上的 localhost 与容器中的 localhost 不同。在这种情况下,您需要使用另一个 IP(如 172.17.42.1)将您的代理绑定(bind)到,或者如果您绑定(bind)到 0.0.0.0,您可以在 docker 期间使用 172.17.42.1 而不是 127.0.0.1 从容器连接构建

您也可以在此处查找示例:How to rebuild dockerfile quick by using cache?

关于docker - 如何在代理后面的 dockerfile 中运行 `apt-get`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22179301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com