CodeGym /课程 /Docker SELF /学习overlay网络

学习overlay网络

Docker SELF
第 18 级 , 课程 1
可用

7.1 学习 overlay 网络

overlay 网络 是一个 Docker 的分布式网络,允许运行在不同主机上的容器相互通信。它通常用于容器编排工具,比如 Docker Swarm 或 Kubernetes,以确保运行在不同节点上的容器之间的通信。在本课程中,我们将学习如何创建和使用 overlay 网络,并查看它的一些应用示例。

创建 overlay 网络 会在现有网络之上构建一个虚拟的分布式网络,将多个主机连接到一个统一的网络空间中。这样可以让容器之间像在同一个局域网里一样交互,而不受主机的物理位置限制。

使用 overlay 网络的优势:

  1. 跨主机的容器通信: 提供运行在不同节点上的容器之间的网络通信。
  2. 隔离: 允许为不同的应用创建隔离的网络空间。
  3. 可扩展性: 支持动态添加和移除节点而不中断运行。

7.2 创建 overlay 网络

要创建 overlay 网络,首先需要初始化 Docker Swarm 集群。这会创建一个管理节点(manager),并允许创建分布式网络。

步骤1: 初始化 Docker Swarm

在将作为集群管理节点的主机上运行命令。这条命令会初始化 Swarm 集群并输出用于将其他节点加入集群的命令。

Terminal

docker swarm init

步骤2: 将工作节点加入集群

在其他主机上运行 docker swarm init 输出的命令,将它们加入集群。命令示例:

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

步骤3: 创建 overlay 网络

集群初始化完成后,通过以下命令创建 overlay 网络:

Terminal

docker network create -d overlay my_overlay_network

步骤4: 检查网络

要检查网络是否成功创建,运行命令 docker network ls,该命令会输出所有网络列表,包括新建的 overlay 网络:

Terminal

docker network ls

输出示例:

Terminal

NETWORK ID     NAME                DRIVER    SCOPE
a1b2c3d4e5     my_overlay_network overlay  swarm

现在网络 my_overlay_network 已经可以用于分布式应用了。

7.3 使用overlay网络

现在网络已经创建了,可以运行连接到这个网络的容器和服务啦。

使用overlay网络管理服务的例子

Docker Swarm里可以用服务来管理容器。我们来创建几个服务,让它们都连接到overlay网络上。

步骤 1: 创建Web服务器服务

Terminal

docker service create --name webserver --network my_overlay_network -p 8080:80 nginx

这条命令创建了webserver服务,并连接到了my_overlay_network网络。Web服务器通过这里可以访问 http://localhost:8080

步骤 2: 创建数据库服务

Terminal

docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres

这里创建了一个database服务,连接到了同一个网络,并设置了环境变量POSTGRES_PASSWORD

步骤 3: 检测服务之间的连接

运行一个临时容器来测试服务之间的连接:

Terminal

docker run -it --network my_overlay_network busybox

在容器内用ping命令来测试与Web服务器和数据库的连接:

Terminal

ping webserver
ping database

如果设置正确,ping命令会显示成功的连接,证明容器可以通过主机名互相通信。

步骤 4: 检查服务状态

使用docker service ls命令检查已创建服务的状态:

Terminal

docker service ls

预期的输出会显示运行中的服务信息,它们的状态以及副本数量。

注意: overlay网络允许连接到同一个Swarm集群的不同主机上的容器之间进行数据交换哦。

7.4 在 Docker Compose 中使用 overlay 网络的示例

Docker Compose 简化了多容器应用和网络的管理。你可以在 docker-compose.yml 文件中定义 overlay 网络,并用于容器之间的通信。

docker-compose.yml 文件示例

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    networks:
      - my_overlay_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: mysecretpassword
    networks:
      - my_overlay_network
        
networks:
  my_overlay_network:
    driver: overlay
    attachable: true

启动 Docker Compose

Terminal

docker stack deploy -c docker-compose.yml mystack

这个命令会使用 docker-compose.yml 文件部署 stack,并创建连接到 my_overlay_network 网络的服务。

实用建议:

  1. 网络监控:使用 Docker Swarm 的网络监控工具,比如 Docker Dashboard 或 Prometheus,来跟踪网络状态和容器之间的交互。
  2. 扩展管理:Overlay 网络支持动态添加和删除节点。确保正确配置网络资源以扩展应用。
  3. 备份配置:定期保存网络和 stack 的配置,以便在发生故障时快速恢复。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION