「DOCKER-CONTAINER」- 桥接网络

默认桥接网络 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