我有一个添加libvirt-nss的/etc/nsswitch.conf文件,以便在主机和来宾计算机上自动解析vm主机名。然后,我有一个运行在主机上的nginx容器(带有--network host),它将流量路由到主机上的一些服务,并将其余流量路由到虚拟机。然而,nginx容器无法解析虚拟机的主机名,我怀疑docker引擎(?)不尊重主机的/etc/nsswitch.conf来解析域名。有没有办法让它工作,或者我不走运?
发布于 2020-11-24 03:28:30
正如@DavidMaze指出的那样,这是设计出来的。有几种方法可以实现你似乎想要做的事情。
您可以向容器中添加nsswitch.conf文件。这在阿尔卑斯山是可行的。将其复制到Dockerfile中或使用绑定挂载:
$ docker run --rm -v /etc/nsswitch.conf:/etc/nsswitch.conf --add-host foobar.dns:8.8.8.8 busybox ping foobar.dns
PING foobar.dns (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=113 time=7.796 ms
64 bytes from 8.8.8.8: seq=1 ttl=113 time=7.809 ms然后,您可以使用docker --add-host向容器的hostfile添加主机名。或者,也可以绑定主机的hosts文件:
$ docker run --rm -v /etc/nsswitch.conf:/etc/nsswitch.conf -v /etc/hosts:/etc/hosts busybox ping foobar.dns
PING foobar.dns (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=113 time=16.961 mshttps://stackoverflow.com/questions/64971915
复制相似问题