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

93

我希望能够使我的Docker容器使用与运行主机相同的 /etc/hosts 设置。有没有方法可以做到这一点?

我知道有一个 --add-host 选项可用于 docker run,但这并不是我想要的,因为不同的主机可能有不同的 /etc/hosts 文件,所以使用 --add-host 硬编码精确的IP地址/主机名称并不理想。


2
我敢建议,也许你更想将容器的DNS设置为考虑主机的/etc/hosts(间接地)。我曾经遇到过同样的情况,我的解决方案是编辑/etc/docker/daemon.json以指向一个简单的DNS代理,该代理读取/etc/hosts - Ondra Žižka
有点晚了,但是...这里说守护进程的/etc/hosts将被使用:https://docs.docker.com/config/containers/container-networking/#dns-services不幸的是,在我的情况下这并没有起作用... - Clerenz
12个回答

0
或者只需执行以下操作:
docker exec -i <容器名称/ID> sh -c 'cat > /etc/hosts' < /etc/hosts

-2

在我的看法中,当运行Docker时传递--network=host选项是更好的选择,正如d3ming所建议的,而不是其他答案所建议的选项:

  1. 主机的/etc/hosts文件的任何更改都会立即对容器生效,这可能是您首先想要的。
  2. 使用-v选项挂载主机的/etc/hosts文件可能不是一个好主意,因为容器的任何意外更改都会破坏主机的配置。

1
正如Clerenz在接受的答案评论中提到的那样,只有在您仍然可以选择使用的网络类型的罕见情况下才可能实现这一点。 - marcolz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接