Docker(2)网络模式
Docker 在运行容器时通过Network Namespace 实现网络隔离并提供多种网络模式Network Mode。下面系统介绍各模式并给出实用案例。一、查看 Docker 网络模式bashbashdocker network ls默认会看到bridge默认hostnone二、Docker 常见网络模式详解1️⃣ bridge桥接模式默认说明每个容器分配独立 IP通过docker0虚拟网桥通信外部访问需端口映射-p✅ 最常用❌ 跨主机不支持需 overlay启动容器docker run -d --name nginx-bridge \ -p 8080:80 \ nginx访问http://宿主机IP:8080查看网络docker inspect nginx-bridge | grep IPAddress2️⃣ host主机模式说明容器直接使用宿主机网络栈无 NAT、无端口映射容器端口 宿主机端口✅ 性能最好、少一层网络转换❌ 失去网络隔离、端口冲突风险启动容器docker run -d --name nginx-host \ --network host \ nginx访问直接用宿主机 80 端口http://宿主机IP⚠️ Windows / MacDocker Desktop上--network host不生效或表现不同3️⃣ none无网络说明容器内只有lo127.0.0.1无法访问外网、无法被访问✅ 用于高安全 / 离线计算 / 自定义网络docker run -it --network none busybox shping baidu.com # 失败4️⃣ container共享另一个容器的网络说明多个容器共享同一个 Network Namespace类似--network host但是共享的是某容器✅ 常用于 Sidecar日志、监控# 主容器 docker run -d --name web nginx # 共享其网络 docker run -it --network container:web busybox sh在 busybox 中wget localhost:805️⃣ 自定义 bridge 网络推荐生产使用说明自带DNS 容器名解析更好的隔离性bashbashdocker network create mynetbashbashdocker run -d --name db --network mynet mysql:8 docker run -d --name app --network mynet myapp在app容器中可直接解析bashbashping db三、模式对比总结模式隔离端口映射DNS解析典型场景bridge✅✅-p❌(默认)普通服务host❌❌❌高性能/端口多none✅❌❌离线/安全container共享❌共享Sidecar自定义 bridge✅✅✅生产微服务