当前位置: 首页 > backend >正文

Docker 网络模式

Docker 的网络模式有以下几种,每种模式对应不同的通信能力、隔离性和使用场景。这是你构建服务之间通信(比如 Tomcat ↔ Kafka ↔ Redis)时必须理解的基础。


一览表:Docker 网络模式对比

模式是否隔离是否可用容器名通信是否共享宿主机端口使用场景举例
bridge(默认)✅ 是✅ 支持❌ 否单机部署,容器通信
host❌ 否❌ 不支持✅ 是高性能服务,绑定宿主机网络
container:<name>❌ 否✅ 共享网络命名空间✅ 同容器多个容器共享网络栈
none✅ 是❌ 无网络❌ 无法通信手动配置网络
自定义 bridge 网络✅ 是✅ 支持❌ 否推荐:容器互通,跨 compose

1. bridge 模式(默认)

  • 每个容器都在独立的网络命名空间。
  • 容器默认不能用容器名访问其他容器,除非显式创建自定义网络。
  • 通过端口映射暴露服务:
docker run -d -p 8080:80 nginx

典型适用:

  • 小型服务;
  • 默认方式;
  • 宿主机访问容器通过端口映射。

2. 自定义 bridge 网络(推荐)

docker network create app_net
docker run --network app_net --name kafka ...
docker run --network app_net --name tomcat ...
  • 所有容器在同一网络 app_net 内;
  • 支持 DNS 解析,可以用容器名访问其他容器。

适用场景:

  • 微服务通信(Kafka、Redis、MySQL、Tomcat、Nginx…);
  • 多个 docker-compose 项目共享网络。

3. host 模式(共享宿主网络)

network_mode: host
  • 容器和宿主机使用同一网络命名空间;
  • 端口不需要映射,容器服务直接暴露在宿主机上;
  • 不支持容器名访问。

适用场景:

  • Kafka 在某些场景下需要 host 网络解决外网消费者访问问题;
  • 高性能场景(UDP 广播监听、Prometheus node_exporter);
  • 简化配置时使用,但损失了隔离性。

限制:

  • 容器名互 ping 不通;
  • 多容器端口容易冲突;
  • docker-compose 中不能使用 networks:host 同时出现。

4. container:<container_name_or_id> 模式

  • 新容器和指定容器共用网络命名空间。
  • 可用于运行副容器(sidecar 模式)。
docker run --network container:nginx alpine

适用场景:

  • 多个容器共享 IP、端口空间;
  • 调试场景、sidecar、与主容器同生死。

5. none 模式(无网络)

docker run --network none ubuntu
  • 容器没有网络;
  • 只能通过挂载 sock 或手动设定网络设备通信。

适用场景:

  • 网络隔离测试;
  • 需要自定义网络配置的极端场景。

实战建议

目标推荐网络设置
Tomcat ↔ Kafka ↔ Redis自定义 bridge 网络,如 app_net
Docker 容器 ↔ 宿主机-p 映射端口或使用 host 网络
docker-compose 文件通信使用同一个 external 自定义网络

http://www.xdnf.cn/news/13857.html

相关文章:

  • Doris与DS结合实现MySQL侧的Upsert功能
  • SpringCloud + MybatisPlus:多租户模式与实现
  • Catch2 开源库介绍与使用指南
  • 【threejs】每天一个小案例讲解:常见材质
  • oracle 23ai json简单使用
  • reactive() 和 toRef()
  • 微服务架构中的 Kafka:异步通信与服务解耦(四)
  • 《哈希算法》题集
  • 最新Transformer模型及深度学习前沿技术应用
  • python学习---dayday2
  • 使用文件的基本操作和文件内容读写操作实现三个功能
  • 中间件是微服务架构的支撑工具,微服务是中间件的应用场景之一。
  • 基于PHP的图书商城(vue版)
  • 拨码开关(DIP Switch)原理、参数、选型与应用指南
  • Linux x86_64架构下的四级分页机制详解
  • Cordova移动应用对云端服务器数据库的跨域访问
  • 图像处理与机器学习项目:特征提取、PCA与分类器评估
  • AI基础知识(07):基于 PyTorch 的手写体识别案例手册
  • 一篇文章理解js闭包和作用于原理
  • 【消息队列】——如何使用Actor模型解决并发问题
  • 基于springboot视频及游戏管理系统+源码+文档
  • Python图像处理基础(六)
  • 域名证书自动更新-acme通用版
  • 网络编程之Modbus与HTTP
  • MySQL中InnoDB存储引擎底层原理与MySQL日志机制深入解析
  • 【在线五子棋对战】五、前端扫盲:html css javascript ajax jquery websocket
  • 应用案例丨一键测量300+工件,QM系列闪测仪批量检测
  • 多模态大语言模型arxiv论文略读(119)
  • 爱普生FC-135R晶振在广域网LoRa设备中的应用
  • 达梦数据库中无效触发器的排查与解决方案指南