你如何使docker容器使用主机的/ etc / hosts文件?

我想这样做,以便我启动的docker容器使用相同的/etc/hosts设置在我运行的主机上。 有没有办法做到这一点?

我知道docker运行时有一个--add-host选项,但这并不是我想要的,因为主机的/etc/hosts文件在不同的机器上可能不同,所以对我来说, --add-host

另一个解决scheme是在--network=host run命令中使用--network=host 。 这告诉Docker使容器使用主机的networking堆栈。 你可以在这里了解更多: https : //docs.docker.com/engine/userguide/networking/

添加到您的运行命令-v /etc/hosts:/etc/hosts

添加标准主机文件 –

 docker run -it ubuntu cat /etc/hosts 

为服务器“foo”添加一个映射 –

 docker run -it --add-host foo:10.0.0.3 ubuntu cat /etc/hosts 

为多个服务器添加映射

 docker run -it --add-host foo:10.0.0.3 --add-host bar:10.7.3.21 ubuntu cat /etc/hosts 

参考 – http://jasani.org/2014/11/19/docker-now-supports-adding-host-mappings/

如果您正在运行用于运行Docker容器的虚拟机,那么如果有主机(虚拟机等)需要容器知道,则根据所使用的虚拟机软件,您将必须确保主机(托pipe虚拟机)的任何机器,你想容器能够解决。 这是因为虚拟机及其容器将在resolv.conf中拥有(虚拟机的)主机IP

国际海事组织,通过 – --network=host选项,而在运行docker是一个更好的select,由其他选项build议的其他选项d3mingbuild议:

  1. 主机的/ etc / hosts中的任何更改都立即可用于容器,如果首先有这样的要求,则可能需要这样做。
  2. 使用-v选项挂载主机的/ etc / hosts可能不是一个好主意,因为任何意外的容器更改都会破坏主机configuration。