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

  发布于 2023-01-07 02:58

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

boot2docker映像是一个使用virtualbox的vagrant box.我尝试过一些流浪盒(例如stigkj/boot2docker).所有人都表现出这个问题.

如果我ssh到boot2docker映像并查看/etc/resolv.conf它使用的是nameserver 10.0.2.3.

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

docker run -i -t ubuntu /bin/sh

查看该容器中的/etc/resolv.conf,它使用8.8.8.8和8.8.4.4作为名称服务器.

docker.logboot2docker vm 的文件中,有这一行:

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认为它是.有关如何让它正确检测名称服务器的任何建议?

1 个回答
  • 我发现了一个问题.似乎boot2docker映像在从主机提取DNS之前运行docker守护程序.所以boot2docker认为DNS在启动时设置为127.0.0.1,然后机器将其更改为正确的名称服务器.

    修复是在映像引导后重新启动docker守护程序.在vagrant中,我通过在我的Vagrantfile中的适当位置添加以下命令来完成此操作:

    config.vm.provision :shell, inline: "/etc/init.d/docker restart"
    

    看起来这是boot2docker中的已知问题,将在即将推出的版本中修复:https: //github.com/boot2docker/boot2docker/issues/357

    2023-01-07 03:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有