在 Docker 的 swarm 模式中,即使所有的应用程序都在不同的容器中运行,它们也可以彼此之间通信。这是通过 swarm 提供的网络功能实现的。本文将介绍 Docker Swarm 的网络模型以及使用 Swarm 管理多个容器的实现。
Docker Swarm 的网络模型
在 swarm 模式中,Docker 引擎以分布式的方式运行。这意味着,它通过多个物理或虚拟机器上的多个 Docker 守护进程共同工作。
每个 Docker 引擎节点都可以运行多个容器。为了它们能够通信,Swarm 网络必须允许跨节点通信。这可以通过在 Swarm 中创建网络实现。
Swarm 网络提供的网络驱动程序有两种,overlay 和 routing mesh。
- overlay
overlay 驱动程序是一种用于多节点集群的网络驱动程序。它允许容器在网络中随时移动,而无需更改 IP 地址。
使用 overlay 驱动程序创建的网络,可以通过单个虚拟网络引用容器,而不管它们在哪个子网或节点上。容器可以在任何节点上运行,并且可以在节点之间切换,而不会影响容器中的应用程序。
- routing mesh
routing mesh 是 Swarm 集群中的一种自动得到激活的网络。它自动将请求路由到已运行容器的节点,从而保持服务的高可用性。
在这种模式下,每个节点上的应用程序将被代理到集群的前端,并在需要时定向到对应的容器。
如何使用 Swarm 网络管理多个容器
为了使用 Swarm 网络管理多个容器,您可以让容器加入您已经为该服务创建的网络。这可以使用 docker stack deploy 命令实现。以下是一个示例:
-- -------------------- ---- ------- -------- --- --------- ---- ------ ----- --------- - --------- --------- ---------- ------- -------
在此示例中,我们使用了 Docker Compose 文件定义了一个服务,该服务运行在我们使用 overlay 网络驱动程序创建的名为 mynetwork 的网络中。在这种情况下,在服务启动时可以自动分配容器的 IP 地址。
结论
在本文中,我们介绍了 Swarm 网络的两种驱动程序以及如何使用它们来管理多个容器和实现网络服务。Swarm 网络提供了一种简单的方法来管理在分布式环境中运行的容器。通过良好的网络设计,我们可以提高我们的服务可用性和可靠性,从而提供更好的用户体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674b2fc50b2e50ef9957f179