用途:整理 Docker 容器网络相关操作,包括网络模式选择、跨主机通信、端口映射与网络诊断。
主要能力:
- 网络驱动:bridge(默认,单主机通信)、host(共享主机网络)、none(无网络)、overlay(跨主机,Swarm)、macvlan(分配 MAC 地址)。
- 网络管理:docker network ls、docker network inspect、docker network create、connect、disconnect。
- Bridge:默认 bridge 容器间通过 IP 通信,不支持容器名解析;自定义 bridge 支持容器名解析。
- Host/None:host 直接使用主机端口、无需映射、性能最好但可能端口冲突;none 完全隔离。
- 端口映射:-p HOST:CONTAINER、多端口、绑定特定 IP、-P 随机端口,docker port 查看。
- DNS 与别名:--dns、--hostname、--add-host、--network-alias。
- Overlay:docker swarm init 后创建,--attachable 允许非 Swarm 服务使用。
- Macvlan:指定 subnet、gateway、parent,容器获得独立 MAC 地址。
- 诊断:docker exec 进入容器安装工具,或使用 nicolaka/netshoot;常用 ip addr、ss、curl、tcpdump、nslookup。
使用方式:按场景创建网络并让容器加入,例如创建 app-network 后启动 db 与 app,通过容器名访问数据库;隔离前后端时分别创建 frontend、backend 网络,用 docker network connect 让后端连接两个网络。
适用场景:容器间通信、前后端隔离、网络问题调试、带宽限制(需 NET_ADMIN 权限,使用 tc)。
限制:默认 bridge 不支持容器名解析;host 网络可能端口冲突;overlay 需 Swarm;macvlan 需指定父接口;带宽限制需额外权限。故障排查可检查是否同网络、DNS 解析、端口映射与防火墙、iptables 规则。