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

Docker Swarm overlay 和 docker_gwbridge

在 Docker Swarm 中,容器需要同时连接 overlay 网络docker_gwbridge 网络,这是为了满足不同层面的通信需求,并确保服务的高可用性和外部可达性。以下是具体原因:


1. Overlay 网络:跨节点通信与服务发现

  • 作用

    • Overlay 网络(如用户自定义的 my-network 或系统自动生成的 ingress 网络)负责 跨节点容器间的通信,支持服务发现、DNS 解析和负载均衡 。
    • 所有服务容器通过 overlay 网络实现 内部通信,即使容器分布在不同节点上也能直接互通。
    • 例如,服务 A 调用服务 B 时,流量通过 overlay 网络传输,无需经过 NAT 或外部网络 。
  • 关键特性

    • 服务发现:通过内置 DNS,容器可以直接通过服务名解析目标容器的 IP。
    • 负载均衡:使用 VIP(虚拟 IP)或 DNSRR(DNS 轮询)模式,将请求均匀分配到后端容器。
    • 安全性:支持加密(--opt encrypted),保护跨节点数据传输 。

2. docker_gwbridge 网络:外部通信与端口映射

  • 作用

    • docker_gwbridge 是默认的 桥接网络,负责将容器连接到宿主机的物理网络,主要解决以下问题:
      1. 外部访问:容器需要访问互联网或外部服务时,通过 docker_gwbridge 实现 NAT 出站 。
      2. 端口发布:当服务通过 -p 发布端口时,外部流量先到达宿主机的 docker_gwbridge,再转发到 overlay 网络中的容器 。
      3. 负载均衡入口ingress 网络(一种特殊的 overlay 网络)依赖 docker_gwbridge 处理外部请求的初始转发 。
  • 关键特性

    • NAT 功能:为容器提供私有 IP 到宿主机公网 IP 的地址转换。
    • 动态管理:Swarm 初始化或加入节点时自动创建,但支持自定义子网、MTU 等参数 。

3. 两者协作的典型场景

场景 1:外部客户端访问服务
  1. 客户端请求发送到宿主机的公开端口(如 80)。
  2. 请求通过 docker_gwbridge 网络进入节点。
  3. Docker 的 IPVS 模块将流量路由到 ingress 网络(overlay 类型)。
  4. ingress 网络将请求转发到目标容器的 overlay 网络接口。
  5. 容器响应通过反向路径返回客户端 。
场景 2:容器访问外部网络
  1. 容器发起对外请求(如 apt-get update)。
  2. 请求通过 docker_gwbridge 网络进行 NAT 转换。
  3. 流量经宿主机的物理网卡发送到外部网络 。
场景 3:服务间内部通信
  1. 服务 A 调用服务 B 的服务名(如 redis)。
  2. 内置 DNS 解析出服务 B 的 VIP 或具体容器 IP。
  3. 流量通过 overlay 网络直接传输,不经过 docker_gwbridge

4. 设计优势

  • 解耦内外通信:overlay 网络专注于内部服务通信,docker_gwbridge 专注于外部交互,避免单点瓶颈。
  • 灵活扩展:用户可通过自定义 overlay 网络划分服务,同时依赖默认网络处理通用需求。
  • 高可用性ingress 网络结合 docker_gwbridge 实现跨节点负载均衡,确保服务对外可达 。

5. 总结

网络核心职责典型用途是否必须
Overlay跨节点通信、服务发现、负载均衡服务间通信、VIP/DNSRR是(服务依赖)
docker_gwbridge外部访问、端口发布、NAT 转换容器出站访问、外部入站是(Swarm 自动创建)

这种双网络模型是 Docker Swarm 实现高效服务编排和网络管理的关键设计 。

相关文章:

  • 如何开启自己计算机远程桌面连接功能? 给别人或异地访问
  • Spring声明式事务生效是有条件滴!
  • 基于 HTML5 的画图工具
  • Windows 安装 Maven
  • C#最佳实践:为何优先使用readonly而非const
  • 【Kubernetes】---污点(Taint)与容忍(Toleration)
  • Java基于局域网的聊天室系统设计与实现,附源码+论文
  • QMultiMapQHashQList使用区别
  • 类复制.省略 class.copy.elision
  • Qt工作总结06 < QMap<> 和QVector<QPair>、以及QPair<>和QMakePair<> >
  • 远程io模块在汽车流水线的应用
  • 【Python】Python办公自动化需要你了解什么?会什么?
  • AI 赋能 Java 开发:从通宵达旦到高效交付的蜕变之路
  • DD3118完整版参数规格书|DD3118 3.0读卡器控制方案|DD3118高速3.0读卡器芯片
  • BTREE存储结构
  • Android 10.0 勿扰模式开启关闭功能实现
  • Node.js:开启现代服务器端编程的新篇章
  • Odoo 17 在线聊天报错 “Couldn‘t bind the websocket...“ 的解决方案
  • 单链表专题
  • 我的世界进阶模组开发教程——制作机械动力附属模组
  • 网站图片延时加载/今天刚刚发生的重大新闻
  • 做网站界面多少钱/网络广告营销经典案例
  • 有什么网站是帮别人做设计的/网站百度收录要多久
  • wordpress可以做网站吗/东莞今天的最新通知
  • 网站建设与制作考试题/seo优化工具有哪些
  • wordpress static page/网页优化seo广州