优先选用 host 模式可使数据包绕过 docker0 网桥、veth 设备、NAT 和 iptables FORWARD 链,延迟降至 10–15μs,吞吐达 9.8 Gbps;自定义 bridge 网络则通过内置 DNS、固定子网和禁用冗余 iptables 提升性能并支持容器名直连。
直接用 host 模式或自定义 bridge 网络,能显著缩短通信路径、减少内核转发和 iptables 遍历开销。关键不在“怎么配”,而在“选对模式+关掉冗余”。
当容器与宿主机共用网络栈时,数据包绕过 docker0 网桥、veth 设备、NAT 和 iptables FORWARD 链,延迟可压至 10–15μs 级别,吞吐接近物理网卡极限(实测达 9.8 Gbps)。适用于:实时日志采集、高频 API 网关、AI 推理服务等对延迟敏感的组件。
docker run --net=host -d my-service
--dns
sysctls 限制 netns 能力,如关闭 net.ipv4.ip_forward
默认 bridge(docker0)存在固定子网、无 DNS 自解析、iptables 规则随容器数线性增长等问题。自定义 bridge 可启用内置 DNS、固定子网、禁用 iptables 干预,实测延迟降低 40%,且支持容器名直连。
docker network create --driver bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 app-net
docker run --network app-net --name api nginx,另一容器中 curl http://api 即通dockerd --iptables=false,配合 --ip-forward=false 更安全docker network create --opt com.docker.network.driver.mtu=1460 app-net
大量容器共存时,veth 转发 + conntrack + iptables 匹配会吃掉可观 CPU。可通过参数精简路径:
sysctl -w net.netfilter.nf_conntrack_max=65536
iptables -t raw -A PREROUTING -d 172.20.0.0/16 -j NOTRACK(针对自定义网段)sysctl -w net.core.rmem_max=16777216、net.core.wmem_max=16777216
sysctl -w net.ipv6.conf.all.disable_ipv6=1,减少协议栈分支判断并非所有容器都需要完整网络能力。对离线批处理、定时任务类容器,彻底关闭网络可省下 namespace 初始化、veth 分配、路由表构建等开销。
docker run --network none busybox ifconfig → 无任何网络接口docker run --network container:existing-container 共享已有容器 netns,零新增开销--dns 127.0.0.1 指向本地缓存服务(如 dnsmasq),避免远程解析阻塞