默认桥接网络 vs 自定义桥接网络
默认桥接网络
通过命令 docker network inspect “bridge” 查看该网络信息,以及使用该网络的容器:
# docker network inspect "bridge" [ { "Name": "bridge", "Id": "d2d6aaa38ce4734dc01cae292a389513ee3e4b312397d39e5f84a0b67e4a59b5", "Created": "2022-06-16T11:11:38.081948369+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { ...
自定义桥接网络
即用户自动创建的桥接网络,而非默认的桥接网络:
# docker network create --driver bridge alpine-net # docker network inspect alpine-net ...
桥接网络的 DNS 解析行为
如果使用默认 bridge 网络,则将集成主机的 DNS 服务器:
1)如果系统运行 systemd-resolve 服务,则继承其 DNS 服务器(networkctl status);
2)否则,复制使用 /etc/resolv.conf 配置信息;
如果使用用户自定义的桥接网络:
1)则使用 Docker 内置的 DNS Server 进行域名解析,其将解析转发到主机的 DNS 服务器配置;
指定 –dns-search=. 选项
Container networking | Docker Documentation
指定 –dns-search=. 选项,导致仅进行内部解析:
# docker run -it --network cstm-bridge --dns-search . --rm busybox sh / # ping www.baidu.com # 无法进行 DNS 解析,导致 ping 无法执行; # docker run -it --network cstm-bridge --dns 223.5.5.5 --dns-search . --rm busybox sh / # ping www.baidu.com # 域名能够正常解析 PING www.baidu.com (103.235.46.40): 56 data bytes 64 bytes from 103.235.46.40: seq=0 ttl=54 time=2.225 ms 64 bytes from 103.235.46.40: seq=1 ttl=54 time=2.261 ms ...
–dns:指定用于解析互联网域名。
参考文献
Networking with standalone containers | Docker Documentation
Container networking | Docker Documentation