Docker Swarm 创建 Overlay 网络

Docker Swarm 是 Docker 官方提供的容器编排工具,允许用户在多个 Docker 主机上运行和管理容器。其中一个关键功能是 Swarm Overlay 网络,它提供了容器间的虚拟网络连接,使得容器可以跨主机进行通信。

什么是 Overlay 网络?

Overlay 网络是一种基于 VXLAN(Virtual Extensible LAN)技术的虚拟网络,它可以在多个 Docker 宿主机上创建一个逻辑网络。这使得容器可以在不同的宿主机上进行通信,就好像它们在同一个局域网内一样。

Overlay 网络采用了多种技术来实现容器之间的通信,其中 VXLAN 是最常用的技术之一。VXLAN 使用了一个虚拟网络标识(VNI),将容器数据包封装在 UDP 包中并通过底层网络进行传输。在容器之间通信时,VXLAN 技术负责将数据包从源容器发送到目标容器。

如何创建 Overlay 网络?

要创建 Overlay 网络,首先需要初始化 Docker Swarm。在 Swarm Manager 节点上运行以下命令:

$ docker swarm init

初始化成功后,可以使用以下命令创建一个 Overlay 网络:

$ docker network create -d overlay my-overlay-network

这将在 Swarm 群集中创建一个名为 my-overlay-network 的 Overlay 网络。可以使用以下命令列出所有网络:

$ docker network ls

在 Overlay 网络中运行容器

要在 Overlay 网络中的容器之间进行通信,只需将容器连接到同一个网络即可。在创建容器时,可以使用 --network 参数指定要连接的网络。

下面是一个使用 Docker Compose 配置文件的示例,其中包含了两个服务,并将它们连接到同一个 Overlay 网络:

version: '3'

services:
  web:
    image: nginx
    networks:
      - my-overlay-network
  
  db:
    image: mysql
    networks:
      - my-overlay-network

networks:
  my-overlay-network:
    external: true

在该示例中,web 服务和 db 服务都连接到了 my-overlay-network 网络。这意味着它们可以通过网络进行通信,而不受物理主机的限制。

要部署该配置文件,可以使用以下命令:

$ docker stack deploy -c docker-compose.yml my-app

总结

Docker Swarm 的 Overlay 网络功能提供了一种简单而强大的方式来创建跨主机的容器网络。通过使用 Overlay 网络,容器可以在不同的 Docker 宿主机上进行通信,这为构建分布式应用程序提供了巨大的灵活性。

希望这篇文章能够帮助您了解 Docker Swarm Overlay 网络的基本原理和使用方法。如果您对此有任何疑问或建议,请随时提出。