我正在尝试使用简单的 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
但它不起作用。几秒钟后,它会在第三步(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。