【问题标题】:Docker ubuntu container can ping archive.ubuntu.com but not apt-getDocker ubuntu 容器可以 ping archive.ubuntu.com 但不能 apt-get
【发布时间】: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


【解决方案1】:

我猜你是在 Openstack 上的一个实例上运行这个?这个问题很可能是因为 MTU。提供一些背景知识,典型的 openstack 部署使用 VXLAN 或 GRE,并且由于它们增加的开销,实例的默认 MTU 减少了(通过 openstack 组件中的配置/类似的东西)。检查您的实例中的 MTU,看看它是否为 1500 或更低。

现在,如果您在实例中运行 docker,docker 会将默认 MTU 设置为 1500。如果您启动容器并登录到它,您将看到默认 MTU 为 1500。您可以将其减小为 1450或1420,看看它是否有效。我遇到了同样的问题,在减少 MTU 后它对我有用。

ExecStart=/usr/bin/docker daemon -H fd:// --mtu=1450

以下是如何在 docker 中更改容器的 MTU 的详细步骤:-

https://rahulait.wordpress.com/2016/02/28/modifying-default-mtu-for-docker-containers/

【讨论】:

  • 谢谢。为我指明了正确的方向,我最终做的是通过将--mtu=1450 添加到我的DOCKER_OPTS 定义来更新我的/etc/default/docker 文件。重新启动服务,tada!感谢您的帮助。
  • 奇怪的是,docker-machine 的 openstack 驱动程序在设置主机实例时没有处理这个问题。如果这是 openstack 上的常见问题。
猜你喜欢
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多