2020 年编辑:这是一个 6 年前的问题。那时我从来没有想过如何解决这个特定的问题,但 Docker 和其他所有相关的东西都在继续前进。SE 不允许我删除我的问题,但它不再相关。
我有一个新的 Ubuntu 14.04 安装,并且想使用 Docker 来运行我需要 12.04 的旧东西。Docker 内部的 DNS 不起作用。
我的笔记本电脑的 resolv.conf 看起来像:
nameserver 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
显然,这不适用于 Docker。因此,它尝试将名称服务器设置为 8.8.8.8 和 8.8.4.4;当我做
$ sudo docker run -i -t ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)
它说:
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
Run Code Online (Sandbox Code Playgroud)
果然,在 Docker 实例中,resolv.conf 看起来像:
nameserver 8.8.8.8
nameserver 8.8.4.4
Run Code Online (Sandbox Code Playgroud)
我可以从 Docker 实例中成功 ping 到这两个。但是,没有 DNS(例如,ping google.com
失败)。
Docker 中的 ifconfig 输出:
eth0 Link …
Run Code Online (Sandbox Code Playgroud)