Docker ubuntu容器可以ping archive.ubuntu.com,但不能获得

Docker ubuntu容器可以ping archive.ubuntu.com,但不能获得,ubuntu,docker,openstack,apt,docker-machine,Ubuntu,Docker,Openstack,Apt,Docker Machine,我使用docker machine在openstack私有云上设置docker主机。一切如期进行。但是,当我尝试用ubuntu:14.04构建Dockerfile,并简单地运行apt get update时,我得到了以下结果: Ign http://archive.ubuntu.com trusty InRelease Ign http://archive.ubuntu.com trusty-updates InRelease ... 需要永远,也需要时间 然后我删除RUN-apt

我使用docker machine在openstack私有云上设置docker主机。一切如期进行。但是,当我尝试用ubuntu:14.04构建Dockerfile,并简单地运行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测试。
docker-RUN-it测试/bin/bash

在容器内,我可以ping archive.ubuntu.com和任何其他域。我在我的
resolve.conf
中看到
nameserver8.8.8
就在那里。但是当我再次尝试运行
apt get update
时,我得到了相同的结果

我尝试使用
--dns 8.8.8.8
标志运行容器,没有任何区别。但是因为我的resolve.conf文件有DNS条目,并且我可以ping域,所以这不应该是问题所在

如果我使用
--net=host
标志运行容器,我就能够获得更新。但此标志不适用于
docker build
命令

我也尝试过这个我发现的建议答案

但这没用

如果我启动了不需要包更新或安装的预构建映像和服务。一切正常。 我为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.

我完全迷路了,任何帮助都将不胜感激

我猜您是在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的详细步骤:-


我猜您是在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的详细步骤:-


我看不出apt get update的输出有什么问题?centos上的yum update出现类似问题
[Errno 12]Timeout
所以您在等待apt get更新时超时?当您尝试在其他图像(例如centos上的yum update)上执行相同操作时,会发生什么情况apt get update Timeout更新了我的问题。我看不出apt get update的输出有什么问题?centos上的yum update
[Errno 12]Timeout
也存在类似问题,所以您在等待apt get update时超时了?当您尝试在其他图像(例如centos上的yum update)上执行相同操作时会发生什么情况apt get update timesout更新了我的问题。谢谢。为我指明了正确的方向,我最后做的是更新我的
/etc/default/docker
文件,将
--mtu=1450
添加到我的
docker\u OPTS
定义中。重新启动服务,tada!感谢您的帮助。很奇怪,docker机器的openstack驱动程序在设置主机实例时没有考虑到这一点。如果这是openstack上的常见问题,谢谢。为我指明了正确的方向,我最后做的是更新我的
/etc/default/docker
文件,将
--mtu=1450
添加到我的
docker\u OPTS
定义中。重新启动服务,tada!感谢您的帮助。很奇怪,docker机器的openstack驱动程序在设置主机实例时没有考虑到这一点。如果这是openstack上的常见问题。