当从桥接模式切换到主机模式,然后再切换回来时,Docker是否将物理/etc/resolv.conf中的resolv.o



我在做一个测试,安装了Docker版本20.10.8,在一台没有安装Docker的机器上构建3967b7d,然后在这台新机器上部署了一个Docker容器的.tar文件。

然后我运行Docker容器,但不包括"--网络";参数在";docker run";命令行,当dockerized应用程序启动时,它无法解析它使用的一些主机名,我看到";未知主机异常";dockerized应用程序日志中的异常。

因此,为了让dockerized应用程序运行,我做了同样的";docker run";命令,但这一次,我包含了一个"--网络主机";参数当该应用程序启动时,它能够DNS解析主机名,而我没有得到";未知主机异常";例外情况。

随后,我做了";docker stop"码头工人rm";然后";docker run";命令多次进行其他测试,但我想尝试调查";未知主机异常";问题,所以我最终做了";docker stop"docker rm";,然后";docker run";命令,但没有"--网络";参数,并且我期望看到";未知主机异常";但是;未知主机异常";异常不再出现,即使容器使用Docker BRIDGE网络!!!

我一直在努力理解/弄清楚";为什么"有一段时间,但后来我只是签入了/var/lib/contensions/<LONG_STRING_OF_NUMBERS-LETTERS>并注意到有一个";resolv.conf";在该目录中;resolv.conf";文件与物理机器的/etc/resolv.conf的内容相同!!

所以我的理论是:

a) 当我最初做";docker run";没有"--网络";参数;resolv.conf";容器内是空的(或默认情况下),然后

b) 当我做";docker run";用"--"网络主机";,Docker将物理/etc/resolv.conf复制到容器的";resolv.conf";,但是

c) 当我做";docker run";但没有任何"--网络";参数(即,具有桥接网络);resolv.conf";保留/保留/未清除。

有人能确认是否发生了上述行为吗?

此外,正如我前面提到的,我一直在做";码头停靠站";以及";码头工人rm";在我这么做之前";docker run";,但是是否存在我应该使用的一些其他命令(或参数)来防止容器";resolv.conf";从桥接模式切换到主机模式,然后再切换回桥接模式时的持久性?

我为这个冗长的问题道歉,但我正在尽可能清楚地解释我的问题。

提前感谢!!!

Jim

Docker完全管理容器中的/etc/resolv.conf,以及网络环境的大部分其他细节。如果图像中有一个resolv.conf文件,则该文件将被隐藏且未使用。如果您需要覆盖DNS解析程序,有一个docker run --dns选项可以做到这一点。

您几乎应该总是使用与您拥有的docker network created网络名称匹配的--net来调用docker run。省略--net选项将使用非常有限的第一代Docker网络设置;--net=host完全禁用Docker网络。网络本身没有任何与DNS相关的设置。

# does not need any options but does need to be created
docker network create a-network
docker run --net=a-network --dns=8.8.8.8 ...

最新更新