Docker容器网络模式选型bridge/host/

选择 Docker 网络模式时,很多人会被 bridge、host、macvlan 搞晕。
简单说:默认的 bridge 适合绝大多数端口映射场景;
host 让容器共享宿主机网络,追求性能但不隔离;
macvlan 给容器分配局域网独立 IP,适合需要被外部直接访问的场景。
下面按原理、选型、命令和避坑逐一拆解。

先看懂三种模式各自的特点

  • bridge(桥接模式):Docker 默认创建 docker0 网桥,容器通过 NAT 访问外网。使用 -p 端口映射后,外部请求进宿主机的端口再转发到容器。适合大部分 Web 应用、测试环境。
  • host(主机模式):容器不再拥有独立网络栈,直接使用宿主机 IP 和端口。启动参数中 -p 不生效,因为端口本身已经暴露在宿主机上。性能损耗最小,适合对延迟敏感或需要监听大量端口的服务。
  • macvlan(Macvlan 模式):为容器分配物理局域网内的独立 IP 和 MAC 地址,容器像一台插在交换机上的设备。适合需要从局域网直接访问容器、容器要对接现有 IP 规划的场景。

业务场景应该怎么选

  • 常规 Web 服务、API 部署:选 bridge,端口通过 -p-P 暴露,安全隔离好。
  • 日志采集、性能监控、DNS 服务:选 host,避免 NAT 转发损耗,且便于容器直接使用宿主机端口探测。
  • 家庭服务器、软路由、NAS 应用:选 macvlan,让容器获得固定局域网 IP,手机和电脑直接访问。
  • 云服务器上使用 macvlan 要先确认底层虚拟化是否支持,多数 VPC 环境不支持,容易网络不通。

上手操作:创建网络、跑容器

# 查看当前网络
docker network ls

# 创建一个 bridge 自定义网络
docker network create -d bridge my-net

# 使用 bridge 网络运行 nginx,并映射 8080 端口
docker run -d --network my-net -p 8080:80 nginx

# 使用 host 模式运行容器(-p 参数会失效)
docker run -d --network host nginx

# 创建 macvlan 网络(parent 换成实际网卡名)
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my-macvlan

# 使用 macvlan 运行容器并指定局域网 IP
docker run -d --network my-macvlan --ip 192.168.1.100 nginx

注意,host 模式下 -p 不生效,如果访问 80 端口,直接用宿主机 IP:80。

常见坑和排查方法

  • bridge 容器互访:同一自定义 bridge 网络内的容器可以直接用容器名互访,但跨宿主机需要额外做路由或使用 overlay 网络。
  • host 端口冲突:多个容器都监听相同端口时,启动会直接报错 address already in use
  • macvlan 与宿主机通信:宿主机无法直接 ping 通 macvlan 容器,因为容器 MAC 地址直接暴露在物理网卡上,宿主机网络栈不会处理该 MAC。如果必须从宿主机访问容器,可以再创建一个 macvlan 子接口,或者改用 ipvlan。
  • 云服务器限制:阿里云、腾讯云等 VPC 环境通常不允许修改底层网卡为混杂模式,macvlan 容器可能拿到 IP 也 ping 不通,建议先在测试机验证。

验证网络是否真的通了

# 查看网络详情,确认容器 IP 和网关正确
docker network inspect my-macvlan

# 容器内测外网
docker exec <容器名> ping -c 4 8.8.8.8

# 容器内测域名解析
docker exec <容器名> nslookup www.baidu.com

# 查看 bridge 端口映射结果
docker port <容器名>

如果在宿主机本机验证 bridge 端口,直接访问 curl http://localhost:8080
对于 macvlan,则从局域网另一台设备执行 ping 192.168.1.100curl http://192.168.1.100

选型时不必追求最复杂,默认 bridge 已覆盖大部分部署需求;
追求性能用 host;
需要局域网直接通信再上 macvlan。
记住每种模式的端口行为、互通规则和宿主机访问限制,在切换模式前做好验证,Docker 网络选型就不会再反复折腾。

分享到:
上一篇
MySQL连接泄漏,应用长连接过多耗尽连接池排查
下一篇
服务器磁盘健康监控smartctl
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意