Docker:与手动逐步构建相比,构建具有不同的结果

时间:2017-04-26 15:05:49

标签: docker dockerfile docker-build

我尝试使用简单的Dockerfile构建一个docker镜像:

FROM ubuntu:16.04

RUN echo '91.189.88.161   archive.ubuntu.com' >> /etc/hosts;
RUN echo '91.189.88.162   security.ubuntu.com' >> /etc/hosts;
RUN apt-get update
RUN apt-get install -y git-core python-pip xvfb wkhtmltopdf python-setuptools python-dev build-essential imagemagick libjpeg-dev locales libpq-dev postgresql-client
RUN pip install -r /home/user/requirements/homologacao.txt

CMD /bin/bash

但它不起作用。几秒钟后,它会在第3步(apt-get update)中抛出一些错误:

  

临时故障解决' archive.ubuntu.com'

但是......如果我手动创建并附加到容器,请使用以下命令

docker run -it ubuntu:16.04

然后单独运行每个命令,它就像一个魅力!任何人都可以向我解释为什么这个版本不起作用,并且手动运行命令呢?看起来每个图层/命令都没有任何效果。

我该怎么做才能让这个自动构建工作?我已将/etc/default/docker更改为在DNS列表中包含docker网络接口:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --dns 172.17.0.1"

其他一些可能有帮助的信息:在ubuntu 16.04主机上运行,​​这个问题不会发生在同一台机器的VM(也就是ubuntu 16.04)中。在VM内部,apt-get更新开箱即用,无需更新/ etc / hosts。

1 个答案:

答案 0 :(得分:1)

我刚试过你的Dockerfileapt-get update完美无缺。

请尝试以下步骤:

  1. 创建或修改/etc/docker/daemon.json

  2. 添加以下内容

  3. {
      "dns": ["8.8.8.8", "8.8.4.4"]
    }
    
    1. 重新启动Docker守护程序:sudo service docker restart
    2. 编辑:试试这个。

      FROM ubuntu:16.04
      
      RUN echo '91.189.88.161   archive.ubuntu.com' >> /etc/hosts && \
          echo '91.189.88.162   security.ubuntu.com' >> /etc/hosts && \
          apt-get update && \
          apt-get install -y git-core python-pip xvfb wkhtmltopdf python-setuptools python-dev build-essential imagemagick libjpeg-dev locales libpq-dev postgresql-client
      
      RUN pip install -r /home/user/requirements/homologacao.txt
      
      CMD /bin/bash