Docker无法访问.local域

问题描述 投票:0回答:1

我试图使用.local域访问我的网络上的设备,但它似乎在Docker中不起作用。

来自主机的Ping正在运行:

$ ping test1.local
PING test1.local (192.168.1.90) 56(84) bytes of data.
64 bytes from 192.168.1.90 (192.168.1.90): icmp_seq=1 ttl=255 time=1.41 ms
64 bytes from 192.168.1.90 (192.168.1.90): icmp_seq=2 ttl=255 time=1.54 ms

Docker守护进程配置:

$ cat /etc/docker/daemon.json 
{
    "dns": ["192.168.1.1","8.8.8.8"]
}

如果我尝试从Docker ping test1.local:

$ sudo docker run --network host busybox ping -c 3 test1.local
ping: bad address 'test1.local'

IP工作的Ping设备:

$ sudo docker run --network host busybox ping -c 3 192.168.1.90
PING 192.168.1.90 (192.168.1.90): 56 data bytes
64 bytes from 192.168.1.90: seq=0 ttl=255 time=4.855 ms
64 bytes from 192.168.1.90: seq=1 ttl=255 time=1.566 ms

所以我假设名称解析错了。

madrian@ubuntudev:~$ cat /etc/resolv.conf 
$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.1
search localdomain

有任何想法如何解决这个问题?

docker
1个回答
0
投票

尝试在没有--network host参数的情况下运行代码。问题出在DNS解析中。

当您使用default bridge(如果省略network参数将使用它)时,容器从主机继承DNS配置,这就是您所需要的:https://docs.docker.com/v17.09/engine/userguide/networking/default_network/configure-dns/

当您使用user-defined bridge时,Docker会更新DNS记录,以便通过名称在容器之间实现无缝通信:https://docs.docker.com/v17.09/engine/userguide/networking/configure-dns/

不幸的是,我无法找到关于DNS如何与host模式一起工作的明确解释,所以我认为这是一个问题

© www.soinside.com 2019 - 2024. All rights reserved.