0

0

如何实现docker容器的跨主机通信? swarm的基本概念是什么?

穿越時空

穿越時空

发布时间:2025-05-28 12:42:02

|

872人浏览过

|

来源于php中文网

原创

docker容器跨主机通信可通过swarm实现。一、docker swarm是原生的集群管理工具,将多台机器组成虚拟大主机,通过node(节点)、manager node(管理节点)、worker node(工作节点)和服务等概念调度容器部署。二、swarm使用overlay网络机制实现跨主机通信,自动建立vxlan连接,形成私有网络,并配置dns解析,使容器可通过服务名访问。三、替代方案包括kubernetes、flannel/calico/weave及自建vxlan/macvlan。四、实际操作步骤:安装docker并启动;初始化swarm集群;加入其他节点;创建overlay网络;部署服务并指定网络。需注意开放端口、通过服务名访问及测试环境模拟多节点的方法。

如何实现docker容器的跨主机通信? swarm的基本概念是什么?

Docker容器跨主机通信是很多团队在部署分布式应用时必须面对的问题。如果你有多个宿主机运行 Docker 容器,想让它们之间直接通信,那肯定不能只靠默认的单机网络模型。实现这个目标的方法有好几种,Swarm 是其中一种比较常见、官方支持的方式。


一、Docker Swarm 是什么?

简单来说,Docker Swarm 就是 Docker 原生的集群管理工具。你可以把它理解成一个“把多台机器组成一个虚拟的大 Docker 主机”的系统。在这个“大主机”里,你依然可以使用熟悉的 docker service 命令来部署服务,Swarm 会自动帮你调度容器到不同的节点上。

Swarm 中有几个基本概念需要了解:

  • Node(节点):就是一台加入了 Swarm 集群的机器,可以是 Manager 节点或 Worker 节点。
  • Manager Node(管理节点):负责管理集群状态、任务调度等核心功能。
  • Worker Node(工作节点):运行容器的节点,接受 Manager 的指令。
  • Service(服务):Swarm 中部署应用的基本单位,定义了容器应该如何运行,比如副本数、端口映射等。

二、为什么用 Swarm 可以实现跨主机通信?

Swarm 自带了一个叫 overlay 网络 的功能,这是它能实现跨主机通信的核心机制之一。

当你在 Swarm 中创建一个 overlay 网络,并将服务加入该网络后,Docker 会自动处理以下几件事:

  1. 所有节点之间建立 VXLAN 连接,形成一个虚拟的私有网络;
  2. 容器之间的通信可以通过这个虚拟网络进行,即使它们分布在不同主机上;
  3. DNS 解析也被自动配置好,服务之间可以直接通过服务名访问。

举个例子:你部署了两个服务,分别是 web 和 db,都连接到了同一个 overlay 网络中。那么 web 容器就可以直接用 db 这个名字去访问数据库服务,不管这两个容器是否在同一个物理主机上。

Codiga
Codiga

可自定义的静态代码分析检测工具

下载

三、除了 Swarm,还有哪些方案?

虽然 Swarm 很方便,但它不是唯一的选择。常见的替代方案包括:

  • Kubernetes(K8s):更强大的编排平台,适合大规模生产环境,但学习曲线较高;
  • Flannel / Calico / Weave:这些是第三方的网络插件,可以在非 Swarm/K8s 环境下搭建跨主机通信;
  • 自建 VXLAN 或者使用 MACVLAN:适用于特定场景,但配置复杂、维护成本高。

如果你只是想快速搭建一个多主机环境下的容器通信系统,而且不想引入太复杂的架构,那 Swarm 是一个非常合适的选择。


四、实际操作建议

要使用 Swarm 实现跨主机通信,步骤大致如下:

  1. 在所有节点上安装 Docker 并启动;
  2. 初始化 Swarm 集群(在主节点执行):
    docker swarm init --advertise-addr <本机IP>
  3. 把其他节点加入集群(根据提示运行 join 命令);
  4. 创建 overlay 网络:
    docker network create -d overlay my_overlay_network
  5. 部署服务并指定网络:
    docker service create --name my_service --network my_overlay_network your_image

注意几点:

  • 所有节点之间需要开放 TCP/UDP 的一些端口(如 2377、7946、4789),否则节点无法正常通信;
  • 不同服务间通过服务名称进行访问,而不是 IP 地址;
  • 如果你是测试环境,可以在同一台机器上模拟多个节点,只需要给每个节点分配不同的端口即可。

基本上就这些。Swarm 提供了一种相对简单的跨主机通信方式,尤其适合中小型项目。虽然它不如 Kubernetes 强大,但在某些场景下反而更轻便实用。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

324

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

231

2023.10.07

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

249

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

494

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

398

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

436

2024.04.08

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

344

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2074

2023.08.14

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 17.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号