Docker:与手动分步构build相比,构build的结果不同

我正在尝试使用一个简单的Dockerfile来构build一个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 

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

临时失败解决“archive.ubuntu.com”

但是…如果我手动创build并附加到一个容器,使用下面的命令

 docker run -it ubuntu:16.04 

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

我该怎么做才能让这个自动构build工作? 我更改了/etc/default/docker以将dockernetworking接口包含在DNS列表中:

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

其他一些信息可能会有所帮助:在一台Ubuntu 16.04主机上运行,​​这个问题不会发生在同一台机器上的虚拟机(也是Ubuntu 16.04)中。 在虚拟机内部,apt-get更新可以直接使用,而无需更新/ etc / hosts。

我刚刚尝试过你的Dockerfileapt-get update

尝试以下步骤:

  1. 创build或编辑/etc/docker/daemon.json

  2. 添加以下内容

 { "dns": ["8.8.8.8", "8.8.4.4"] } 
  1. 重新启动Docker守护进程: sudo service docker restart

编辑:试试这个。

 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