7.1 学习 overlay
网络
overlay
网络 是一个 Docker 的分布式网络,允许运行在不同主机上的容器相互通信。它通常用于容器编排工具,比如 Docker Swarm 或 Kubernetes,以确保运行在不同节点上的容器之间的通信。在本课程中,我们将学习如何创建和使用 overlay
网络,并查看它的一些应用示例。
创建 overlay
网络 会在现有网络之上构建一个虚拟的分布式网络,将多个主机连接到一个统一的网络空间中。这样可以让容器之间像在同一个局域网里一样交互,而不受主机的物理位置限制。
使用 overlay
网络的优势:
- 跨主机的容器通信: 提供运行在不同节点上的容器之间的网络通信。
- 隔离: 允许为不同的应用创建隔离的网络空间。
- 可扩展性: 支持动态添加和移除节点而不中断运行。
7.2 创建 overlay
网络
要创建 overlay
网络,首先需要初始化 Docker Swarm
集群。这会创建一个管理节点(manager),并允许创建分布式网络。
步骤1: 初始化 Docker Swarm
在将作为集群管理节点的主机上运行命令。这条命令会初始化 Swarm
集群并输出用于将其他节点加入集群的命令。
docker swarm init
步骤2: 将工作节点加入集群
在其他主机上运行 docker swarm init
输出的命令,将它们加入集群。命令示例:
docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377
步骤3: 创建 overlay
网络
集群初始化完成后,通过以下命令创建 overlay
网络:
docker network create -d overlay my_overlay_network
步骤4: 检查网络
要检查网络是否成功创建,运行命令 docker network ls
,该命令会输出所有网络列表,包括新建的 overlay
网络:
docker network ls
输出示例:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5 my_overlay_network overlay swarm
现在网络 my_overlay_network
已经可以用于分布式应用了。
7.3 使用overlay
网络
现在网络已经创建了,可以运行连接到这个网络的容器和服务啦。
使用overlay
网络管理服务的例子
在Docker Swarm
里可以用服务来管理容器。我们来创建几个服务,让它们都连接到overlay
网络上。
步骤 1: 创建Web服务器服务
docker service create --name webserver --network my_overlay_network -p 8080:80 nginx
这条命令创建了webserver
服务,并连接到了my_overlay_network
网络。Web服务器通过这里可以访问 http://localhost:8080 。
步骤 2: 创建数据库服务
docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres
这里创建了一个database
服务,连接到了同一个网络,并设置了环境变量POSTGRES_PASSWORD
。
步骤 3: 检测服务之间的连接
运行一个临时容器来测试服务之间的连接:
docker run -it --network my_overlay_network busybox
在容器内用ping
命令来测试与Web服务器和数据库的连接:
ping webserver
ping database
如果设置正确,ping命令会显示成功的连接,证明容器可以通过主机名互相通信。
步骤 4: 检查服务状态
使用docker service ls
命令检查已创建服务的状态:
docker service ls
预期的输出会显示运行中的服务信息,它们的状态以及副本数量。
注意: overlay
网络允许连接到同一个Swarm
集群的不同主机上的容器之间进行数据交换哦。
7.4 在 Docker Compose
中使用 overlay
网络的示例
Docker Compose
简化了多容器应用和网络的管理。你可以在 docker-compose.yml
文件中定义 overlay 网络,并用于容器之间的通信。
docker-compose.yml
文件示例:
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
:
docker stack deploy -c docker-compose.yml mystack
这个命令会使用 docker-compose.yml
文件部署 stack,并创建连接到 my_overlay_network
网络的服务。
实用建议:
- 网络监控:使用 Docker Swarm 的网络监控工具,比如 Docker Dashboard 或 Prometheus,来跟踪网络状态和容器之间的交互。
- 扩展管理:Overlay 网络支持动态添加和删除节点。确保正确配置网络资源以扩展应用。
- 备份配置:定期保存网络和 stack 的配置,以便在发生故障时快速恢复。
GO TO FULL VERSION