docker容器内为什么能解析宿主机的hosts文件

在这里插入图片描述

Docker容器可以通过特定的网络设置来解析宿主机的hosts文件,这是因为Docker容器在创建网络时,会自动将宿主机的DNS配置信息传递给容器。

当你启动一个Docker容器时,如果没有指定任何DNS相关的选项,Docker默认会使用宿主机的DNS配置。这包括/etc/resolv.conf文件中的信息,该文件通常包含了DNS服务器的地址。

例如,以下命令将启动一个新的Docker容器,而不需要指定任何特殊的DNS设置,因此它会自动使用宿主机的DNS配置:

docker run -it --rm ubuntu

在这个容器内部,/etc/resolv.conf通常会包含如下内容:

root@62283216a8ee:/# cat /etc/resolv.conf
# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.

nameserver 192.168.49.1
search .
options edns0 trust-ad ndots:0

# Based on host file: '/etc/resolv.conf' (legacy)
# Overrides: []
# Option ndots from: host

可以发现容器中的nameserver是宿主机的IP(192.168.49.1),这样宿主机会成为容器的DNS服务器,所以就会解析/etc/hosts文件中的记录,因此可以在宿主机中的/etc/hosts定义自定义域名供容器使用。

猜你喜欢

转载自blog.csdn.net/fuxily/article/details/139968775