
虽然都叫桥接“主机”但 Docker 和虚拟机的网络模式底层实现完全不同核心原因在于虚拟机通过 Hypervisor 模拟了一整套硬件每个 VM 有独立内核和完整网络栈而容器共享宿主机内核通过 Linux 的 Network Namespace 做进程级隔离。 这导致同名模式的行为差异很大。️ 虚拟机VMware的 3 种模式桥接模式Bridge虚拟机通过虚拟交换机 VMnet0 直接桥接到物理网卡获得和宿主机同网段的独立 IP在局域网中就像一台真实机器可被其他设备直接访问。NAT 模式VMware 创建私有虚拟网络VMnet8虚拟机获得私有 IP通过宿主机的 NAT 转发上网。外部无法直接访问虚拟机除非配置端口转发。仅主机模式Host-Only完全封闭的虚拟网络VMnet1虚拟机只能和宿主机及其他 Host-Only 虚拟机通信无法上网。 Docker 的 3 种核心模式Bridge 模式默认Docker 创建虚拟网桥docker0每个容器获得私有 IP如 172.17.0.x通过 NAT 访问外网对外服务需-p端口映射。Host 模式容器直接复用宿主机的网络命名空间共享 IP 和端口无 NAT 开销性能最高但隔离性最弱。None 模式容器只有回环接口完全无网络需手动配置。 同名模式为什么行为不同桥接完全不同这是最容易混淆的地方VMware 桥接虚拟机拿到的是局域网真实 IP和宿主机平级局域网其他设备可以直接访问它。Docker Bridge容器拿到的是内部私有 IP172.17.x.x对外不可见必须通过端口映射-p才能被外部访问。本质上更像 VMware 的NAT 模式。简单说VMware 桥接 容器上局域网Docker Bridge 容器躲在宿主机后面。Host完全不同VMware 没有真正的 Host 模式虚拟机始终有自己独立的网络栈和 IP不可能和宿主机共享端口。Docker Host容器直接住进宿主机的网络空间容器监听 80 端口 宿主机 80 端口被占用两者完全共享。对应关系总结功能需求VMware 模式Docker 模式容器/VM 在局域网可见Bridge真实IPMacvlan非默认容器/VM 能上网但外部不可达NATBridge默认完全隔离不能上网Host-OnlyNone共享宿主机网络❌ 无对应HostDocker 的Macvlan 模式非默认需手动创建才是真正对应 VMware 桥接的模式——每个容器获得独立的 MAC 地址和局域网 IP直接作为物理网络中的独立设备存在。一句话总结名字相同但底层机制不同。VMware 操作的是完整虚拟机的网卡Docker 操作的是进程的网络命名空间所以同名模式的行为完全不同。Docker 网络这块其实还有 Service 和 DNS 自动发现机制要不要展开讲讲容器之间怎么互相通信