我正在使用 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 的问题。
原文由 Christopher Louden 发布,翻译遵循 CC BY-SA 4.0 许可协议
更新:
您在 ENV 中对环境变量的大小写错误。正确的是
http_proxy
。你的例子应该是:或者
在 ENV 中指定的所有变量都添加到每个 RUN 命令之前。每个 RUN 命令都在自己的容器/环境中执行,因此它不会从以前的 RUN 命令继承变量!
注意:不需要使用代理调用 docker daemon 来工作,但如果你想拉图像等,你也需要为 docker deamon 设置代理。您可以在 Ubuntu 中的
/etc/default/docker
中为守护进程设置代理(它不影响容器设置)。此外,如果您 在主机(即 localhost,127.0.0.1)上运行代理,也会发生这种情况。主机上的 localhost 与容器中的 localhost 不同。在这种情况下,您需要使用另一个 IP(如 172.17.42.1)将您的代理绑定到,或者如果您绑定到 0.0.0.0,您可以在
docker build
期间使用 172.17.42.1 而不是 127.0.0.1 从容器连接---
.您也可以在此处查找示例: 如何使用缓存快速重建 dockerfile?