Moby: resolv.conf没有这样的文件或目录

创建于 2014-03-26  ·  17评论  ·  资料来源: moby/moby

我刚刚从本指南离开在ubuntu 12.04上安装docker:
http://docs.docker.io/zh-CN/latest/installation/ubuntulinux/
我知道了

➜〜sudo docker运行-i -t ubuntu / bin / bash
2014/03/26 11:45:17错误:打开/etc/resolv.conf:没有此类文件或目录

有什么建议?

arenetworking kinbug

最有用的评论

我遇到了这个问题,这似乎是我的发行版Sabayon Linux上NetworkManager配置的副作用。

就我而言,/ etc / resolv.conf是/etc/resolvconf/run/resolve.conf的符号链接,仅在NetworkManager连接到网络之后创建。 这使Docker无法在启动时启动,但是在我登录并连接到网络后它可以正常启动。

所有17条评论

您的主机有问题。 创建/etc/resolv.conf并使用适当的DNS信息填充它,然后再次尝试命令。

这不是Docker错误,而是主机上缺少/etc/resolv.conf引起的问题。 当主机上没有resolv.conf时,我可以重现该问题。

请修复您的Linux系统。

恕我直言,该文件不是必需的,是吗? 因此,它不应该是关于损坏的操作系统的。
http://man7.org/linux/man-pages/man5/resolv.conf.5.html

如果此文件不存在,则仅查询本地计算机上的名称服务器;否则,将仅查询名称服务器。

在这种情况下,DNS服务器应在本地计算机上运行。

我遇到了这个问题,这似乎是我的发行版Sabayon Linux上NetworkManager配置的副作用。

就我而言,/ etc / resolv.conf是/etc/resolvconf/run/resolve.conf的符号链接,仅在NetworkManager连接到网络之后创建。 这使Docker无法在启动时启动,但是在我登录并连接到网络后它可以正常启动。

@OOPMan在启动脚本中,您是否不应该在启动

我还想知道这是否应该是上游Go(特别是“ netgo”)问题-我们实际上是直接检查resolv.conf还是仅通过netgo实现间接检查?

我已经意识到我的问题与NM或Sabayon Linux无关:-)

我在华硕X550CC上运行。 总体而言,这是一台不错的机器,但它有一个警告:Linux禁用了Wi-Fi硬件,直到您睡觉然后恢复。 这意味着在启动时,未连接到有线LAN,系统基本上会确定没有可用的网络,因此/etc/resolv.conf不包含任何内容。 Docker不喜欢这样,因此无法启动。

一旦我暂停了恢复工作,一切都很好,Docker开始了。

@unclejack @crosbymichael我今天仍在Docker 1.12.6版上看到此问题。
为什么/etc/resolv.conf门控正在运行的Docker容器?

我认为这还没有一个很好的答案,而且由于我也遇到了这个问题,所以我将重新开放。 @thaJeztah您可以ping网络维护者吗? 在这一点上,我不明白为什么容器启动是由网络控制的(我们确实有隔离的机器,其中没有resolv.conf文件,但是无论如何我们都想启动容器)

resolv.conf手册(来自glibc)指出:

   If this file does not exist, only the name server on the local
   machine will be queried; the domain name is determined from the
   hostname and the domain search path is constructed from the domain
   name.

因此,应该假定没有resolv.conf的Linux系统是有效的Linux系统。

其他软件(例如golang的DNS resolv.conf加载逻辑)以相同的方式处理丢失或无法访问的resolv.conf: https ://golang.org/src/net/dnsconfig_unix.go

另外,在使用非libc NSS模块(例如nss-resolve或winbind,ldap等)的系统上,resolv.conf也是不必要的。

/ cc @sanimej

此错误还阻止在某些发行版上离线使用docker。

尝试在以下位置修复它: https :

只需在该位置创建一个空文件名为“ resolv.conf”,我的问题就解决了〜

我看到针对此问题的修复程序已通过https://github.com/moby/moby/commit/1ddeb11835600127a3319fc0dd3764e57ffbf521合并,它将包含在即将发布的17.10版本中; https://github.com/docker/docker-ce/blob/17.10/components/engine/vendor/github.com/docker/libnetwork/sandbox_dns_unix.go

关闭,因为这已在主控master上解决

此页面是否有帮助?
0 / 5 - 0 等级