Docker 网络模式:bridge、host、none 到底怎么选

举报
yd_278701352 发表于 2026/11/06 02:59:53 2026/11/06
【摘要】 Docker 网络模式:bridge、host、none 到底怎么选用 Docker 跑服务时,容器能不能被访问、能不能连外网、端口会不会冲突,基本都由网络模式决定。Docker 自带三种模式:bridge、host、none。理解它们的区别,选型就不会靠猜。 bridge:默认模式,也是最常用的docker run 不指定 --network 时,容器用的就是 bridge 模式。每个容...

Docker 网络模式:bridge、host、none 到底怎么选

用 Docker 跑服务时,容器能不能被访问、能不能连外网、端口会不会冲突,基本都由网络模式决定。Docker 自带三种模式:bridge、host、none。理解它们的区别,选型就不会靠猜。

bridge:默认模式,也是最常用的

docker run 不指定 --network 时,容器用的就是 bridge 模式。每个容器会拿到一个独立 IP(一般是 172.17.x.x),容器之间通过这个内网 IP 互通,宿主机之外想访问容器里的服务,要用 -p 做端口映射,比如 -p 8080:80。

优点很明显:隔离性好,多个容器可以在宿主机上用同一个端口(容器内都是 80,映射到宿主机不同端口即可);容器 IP 固定在内网段,不直接暴露。

缺点也有:多一层 NAT 转发,性能有轻微损耗;容器之间想用名字互相访问,需要自己建一个自定义 bridge 网络(默认 bridge 不支持容器名解析)。

适合:绝大多数 Web 服务、数据库、中间件。开发和生产都优先考虑它。

host:容器直接用宿主机的网络

--network host 之后,容器不再有独立 IP,它和宿主机共享同一套网络栈。容器里起一个 80 端口的服务,宿主机 80 端口就直接能访问,不需要 -p 映射。

优点是性能最好,没有 NAT 开销,延迟最低;缺点是隔离性最差——容器端口就是宿主机端口,两个容器不能同时占同一个端口,端口冲突要自己协调。

适合:对网络性能敏感的场景,比如高并发代理、游戏服务器;或者容器需要监听大量随机端口,用映射写不过来的时候。

none:完全不联网

--network none 的容器只有一个 loopback 接口,没有任何网络。既不能访问外网,也不能被访问。

听起来没用,但它有两个正经用途:一是跑完全离线的批处理任务(比如本地文件格式转换),断网本身就是一道安全防线;二是用作自定义网络方案的起点,后面再手动把网卡接进来。

适合:纯离线计算、需要严格网络隔离的安全敏感任务。

怎么选?一张小抄

  • 不确定选什么 → bridge,默认项一般不会错。
  • 追求极致网络性能、能接受端口冲突管理 → host。
  • 不需要任何网络 → none。
  • 多个容器要互相用名字访问 → 建自定义 bridge 网络(docker network create mynet),比默认 bridge 好用。

最后提醒一点:bridge 模式下容器重启后 IP 可能变化,服务之间互相调用不要写死容器 IP,用容器名或自定义网络的内置 DNS 解析才是正路。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。