用途:指导 Docker 网络模式选择、配置与容器间通信,并排查网络不通问题。触发场景包括 docker network、bridge/host/overlay 网络、端口映射与 publish port、容器间通信、跨主机通信及网络故障排查。
主要能力:对比各种网络模式——bridge(默认,单机容器级隔离,不跨主机)、host(共享宿主网络,无隔离、性能高)、overlay(Swarm 多主机,可跨主机)、none(完全无网络)、macvlan/ipvlan(需物理 IP 的旧应用)。推荐创建自定义 bridge 网络,可获得自动 DNS 解析、与默认 bridge 隔离、运行时连接/断开等优势。
使用方式:创建网络与运行容器: docker network create --driver bridge mynet docker run -d --name app1 --network mynet nginx:alpine 同一网络内可用服务名直接解析,无需 IP。端口发布: docker run -p 8080:80 nginx(宿主 8080→容器 80)、 docker run -p 8080(随机宿主端口)、 docker run -P nginx(发布所有 EXPOSE 端口)、 -p 127.0.0.1:8080:80(仅绑定本机)。Overlay 网络需先 docker swarm init,或加 --attachable 供独立容器使用;Compose 中 networks 可指定 driver: overlay。
排查:docker network inspect mynet;在容器内执行 docker exec app1 ping -c 3 app2、nslookup db、curl http://app2:8080/health;宿主上检查 sudo iptables -t nat -L DOCKER -n。
限制与注意:默认 bridge 不支持按名称解析,应改用自定义 bridge;宿主端口被占用时用 lsof -i :8080 排查并换端口;macOS 上 --network host 加入的是虚拟机网络而非 Mac 网络,建议改用 -p;overlay 必须配合 Swarm;Dockerfile 中 EXPOSE 仅作文档,不实际发布端口。安全方面可用 --internal 禁止外网访问、--opt encrypted=true 加密 overlay 流量,生产环境避免 --network host。该技能仅作指导,不包含可执行脚本;Kubernetes 网络策略、外部负载均衡与 iptables 精细配置超出其范围。官方文档见 https://docs.docker.com/network/ 与 https://docs.docker.com/reference/cli/docker/network/。