由于代理设置,无法下载Dockerfile中声明的基本映像

时间:2018-07-20 10:49:40

标签: docker dockerfile

这可能是一个简单的问题,但是无论如何。

我创建了一个Dockerfile,第一行是:FROM python:2.7-slim。该映像不在我的本地系统中,因此可以从存储库中下载它,对吗?

但是,我的代理设置不允许我下载图像。因此,我的问题是,有没有可能我可以声明代理设置以下载基本映像?

主机运行Ubuntu 16.04。

1 个答案:

答案 0 :(得分:0)

我不确定您实际上在问什么。因此,我将尝试提供有关docker和代理设置的一些常规信息。

正如您正确提到的那样:

  

我创建了一个Dockerfile,第一行是:FROM python:2.7-slim。该图像不在我的本地系统中,因此它将从存储库中下载它。

实际上是从官方docker存储库(如果已设置,则为私有)下载主机中不存在映像的情况。

如果使用代理,则应提供docker daemon代理设置。为此,请执行以下步骤(quoted from official documentation):

  1. 为docker服务创建一个systemd插入目录:

    $ sudo mkdir -p /etc/systemd/system/docker.service.d

  2. 创建一个名为/etc/systemd/system/docker.service.d/http-proxy.conf的文件,其中添加了HTTP_PROXY环境变量:

    [Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"

  3. 清除更改

    $ sudo systemctl daemon-reload

  4. 重新启动docker

    $ sudo systemctl restart docker

在这一点上,我相信您将能够下载python:2.7-slim图片。


另一方面,如果您希望在容器内自动设置与代理相关的环境变量,则应遵循this指南。请注意,这等同于我对您的第一个问题的评论。因此,如果不存在初始图像(FROM语句),则在Dockerfile中设置代理环境将对您没有帮助。

最后,您可以预先配置容器以在运行时设置代理环境。但是在Dockerfile中,当您指示Docker守护程序构建映像时,守护程序应该知道您的代理设置,以便在FROM语句中下载映像(如果不存在)。

希望有帮助!