【发布时间】:2016-04-16 13:56:26
【问题描述】:
我使用 docker-machine 在我们的 openstack 私有云上设置了一个 docker 主机。一切都按预期进行。但是当我尝试使用 ubuntu:14.04 构建 Dockerfile 并简单地执行 RUN apt-get update 时,我得到了这个:
Ign http://archive.ubuntu.com trusty InRelease
Ign http://archive.ubuntu.com trusty-updates InRelease
...
需要永远,并且会超时。
然后我删除RUN apt-get update 并运行docker build -t test . 和docker run -it test /bin/bash
在容器内,我可以 ping archive.ubuntu.com 和任何其他域。我在我的resolve.conf 中看到nameserver 8.8.8.8 在那里。但是当我再次尝试运行apt-get update 时,我得到了相同的结果。
我尝试使用--dns 8.8.8.8 标志运行容器,没有区别。但由于我的 resolve.conf 文件有 DNS 条目,而且我可以 ping 域,这应该不是问题。
如果我使用 --net=host 标志运行容器,我就可以进行 apt-get 更新。但是这个标志不适用于docker build 命令。
我也试过这个我找到的建议答案here。
sudo apt-get install bridge-utils
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
sudo service docker start
但它没有帮助。
如果我启动不需要更新或安装包的预构建映像和服务。一切都按预期工作。 我已经为 docker 主机尝试了无数次重新安装和不同的云映像。主机上没有运行防火墙软件。
也可以用其他图片体验这个,例如 centos yum update
http://centos.uib.no/7.2.1511/os/x86_64/repodata/repomd.xml:
[Errno 12] Timeout on http://centos.uib.no/7.2.1511/os/x86_64/repodata/repomd.xml:
(28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')
Trying other mirror.
我完全迷失了,任何帮助将不胜感激!
【问题讨论】:
-
我看不出 apt-get update 的输出有什么问题?
-
centos 上 yum 更新的类似问题
[Errno 12] Timeout -
所以你在等待你的apt-get更新吗?当您尝试在其他图像上执行相同操作时会发生什么(例如 centos 上的 yum 更新)
-
apt-get 更新超时,更新了我的问题。
标签: ubuntu docker openstack apt docker-machine