章节摘要:容器的网络是 NET namespace 加虚拟设备堆出来的。本章先画出 bridge、host、none、container 四种模式的拓扑,再拆端口映射在 netfilter 里的落点,最后讲自定义网络为什么自带 DNS、生产该怎么规划容器互联。
bridge 模式的容器像住在一条内网街上的住户,端口映射是给这条街开的指定窗口。

bridge 的 veth 与 docker0、host 的零开销、none 的绝对隔离、container 的共享栈,四种模式各自的机制、验证命令与选择依据。
-p 参数背后的 DNAT 规则、发布到指定接口的安全意义,以及为什么必须放弃默认网桥、改用自定义网络换取 DNS 与隔离性。
4.1 讲单容器怎么接入网络,4.2 讲容器与外界、容器与容器怎么互相找到对方:
接入:四种模式选一种(4.1) | v 互访:端口映射对外 + 自定义网络对内(4.2)
网络层最大的陷阱是把容器网络当成传统主机网络来理解。容器网络是动态的:IP 随创建分配、随销毁回收,服务地址必须落在"名字"而不是 IP 上;容器网络是叠加的:iptables 规则、veth 设备、网桥三者配合,任何一环缺失表现都不同。建议学习时准备两个终端,一个跑命令,另一个开着 docker network inspect 与宿主机的 ip 命令实时对照,让每条配置都能在拓扑图上找到落点。网络问题在生产上最消耗排查时间,前期投入的观察习惯会成倍返还。
学习本章时要克制"背参数"的冲动。四种模式、一堆命令,真正需要记住的只有拓扑图:数据从容器 eth0 出发,经 veth 网线到网桥,再经 NAT 出宿主机——顺着这条路径推演,每个网络现象都能找到落点。命令忘了可以查,路径图忘了就只能瞎猜。