Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker容器未在boot2docker中使用主机DNS_Dns_Docker_Boot2docker - Fatal编程技术网

Docker容器未在boot2docker中使用主机DNS

Docker容器未在boot2docker中使用主机DNS,dns,docker,boot2docker,Dns,Docker,Boot2docker,我正在Mac上运行boot2docker。 OSX版本10.9.3 boot2docker版本4.3.12 Docker版本0.12.0 boot2docker映像是一个使用virtualbox的漫游框。我试过一些流浪者盒子(例如stigkj/boot2docker)。他们都表现出这个问题 如果我ssh到boot2docker映像并查看/etc/resolv.conf,那么它使用的是名称服务器10.0.2.3 我使用以下命令启动一个简单的docker映像: docker run -i -t ub

我正在Mac上运行boot2docker。 OSX版本10.9.3 boot2docker版本4.3.12 Docker版本0.12.0

boot2docker映像是一个使用virtualbox的漫游框。我试过一些流浪者盒子(例如stigkj/boot2docker)。他们都表现出这个问题

如果我ssh到boot2docker映像并查看/etc/resolv.conf,那么它使用的是名称服务器10.0.2.3

我使用以下命令启动一个简单的docker映像:

docker run -i -t ubuntu /bin/sh
查看该容器中的/etc/resolv.conf,它使用8.8.8.8和8.8.4.4作为名称服务器

在boot2docker vm上的
docker.log
文件中,有以下行:

2014/06/30 15:25:01 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]
据我所知,docker应该使用主机的名称服务器。只有当主机使用127.0.0.1作为其名称服务器时,才会默认使用google名称服务器作为备份

主机没有使用127.0.0.1作为名称服务器,但docker似乎认为是这样。有没有关于如何让它正确检测名称服务器的建议?

我找到了一个修复方法。 看起来boot2docker映像在从主机提取DNS之前运行docker守护进程。因此boot2docker认为DNS在引导时设置为127.0.0.1,然后机器将其更改为正确的名称服务器

修复方法是在映像启动后重新启动docker守护程序。 在vagrant中,我在vagrant文件的适当位置添加了以下命令:

config.vm.provision :shell, inline: "/etc/init.d/docker restart"
这似乎是boot2docker中的一个已知问题,将在即将发布的版本中修复:
问题链接和内部讨论归功于@oillio

它也发生在Windows7环境中,使用Boot2Docker1.0.1,我遵循中的建议


注意:FWIW对我来说,在我安装Docker后,通过重新启动Mac来修复。相关讨论:
$ sudo udhcpc   # refresh the DHCP 
$ sudo /etc/init.d/docker restart # restart the service