在 Docker 中,Swarm 模式允许您将多个 Docker 守护进程聚合在一起以创建一个虚拟的跨主机容器集群。Swarm 模式下的网络允许您创建覆盖网络,这样容器就可以跨不同的 Swarm 节点进行通信。
要创建一个 Swarm 模式下的网络,请遵循以下步骤:
步骤 1: 初始化 Swarm 或加入节点到 Swarm
如果你还没有一个 Swarm 集群,首先需要初始化一个 Swarm 管理节点(manager)或添加工作节点(worker)。如果你已经有了一个 Swarm 集群,则可以跳过此步骤。
初始化 Swarm 可以通过以下命令完成:
docker swarm init --advertise-addr <管理节点IP>
如果你想要将其他节点加入 Swarm,你可以使用 docker swarm join
命令,并且提供从管理节点获取的令牌(token)。
步骤 2: 创建网络
一旦你有一个活跃的 Swarm 集群,你可以创建一个覆盖网络。覆盖网络允许跨多个 Swarm 节点的服务进行通信。这通常用于服务发现和负载均衡。
创建一个覆盖网络可以通过以下命令完成:
docker network create --driver overlay --opt encrypted <网络名称>
这里 -driver overlay
指定了使用 Swarm 模式的覆盖网络驱动程序。--opt encrypted
是一个可选参数,它会启用 TLS 加密来保护网络流量。<网络名称>
是你自己定义的网络名称。
示例
假设我们创建一个名为 my-overlay-net
的加密覆盖网络,可以这样做:
docker network create --driver overlay --opt encrypted my-overlay-net
步骤 3: 使用网络启动服务
创建了网络之后,你可以在创建服务时指定这个网络,以便该服务的容器可以在这个网络中与其他服务通信。
例如,要在一个服务中使用上面创建的网络 my-overlay-net
,可以这样做:
docker service create \
--name webapp \
--network my-overlay-net \
--replicas 3 \
nginx:latest
这个命令将会创建一个名为 webapp
的服务,它使用 nginx:latest
镜像,并且分配给该服务 3 个副本,同时这些容器将连接到 my-overlay-net
网络上。
请确保根据实际环境调整 IP 地址、网络名和服务配置。