认识
一、认识
Docker Swarm
是 Docker
提供的原生容器编排和集群管理工具。它将多个 Docker
引擎节点集成在一起,形成一个高可用、高可扩展的虚拟 Docker
引擎。Swarm
模式内置于 Docker
引擎中,可以通过简单的 Docker
命令来管理集群中的容器。它将 Docker
主机池转变为单个虚拟 Docker
主机。 Docker Swarm
提供了标准的 Docker API
,所有任何已经与 Docker
守护程序通信的工具都可以使用 Swarm
轻松地扩展到多个主机。与 Swarm
对应的是 Kubernetes(k8s)
Docker Swarm
适合初学者、小型项目或需要快速部署和管理的简单场景。由于其简单性和与 Docker
的无缝集成,Swarm
是那些已经在使用 Docker
并希望扩展到集群环境的团队的理想选择。
二、功能
2.1 服务发现
内置 DNS
服务进行服务发现。
2.2 负载均衡
通过 VIP
(虚拟 IP
)和 DNS RR
(轮询)实现负载均衡。
2.3 自愈能力
Docker Swarm
提供了基本的自愈功能。 自动重新调度失败的任务,确保服务的高可用性。节点故障时,自动将任务迁移到其他可用节点。
2.4 水平扩展
2.5 滚动更新和回滚
Docker Swarm
提供了滚动更新和回滚,但是功能相对简单。 支持无中断地更新服务,逐步替换旧版本容器为新版本容器。
2.6 声明式服务模型
用户定义服务的期望状态,Swarm 保证实际状态与期望状态一致。
三、核心
3.1 节点(Node)
节点是运行 Docker
容器的机器,可以是物理机或虚拟机。在 Swarm
集群中,有两种类型的节点:
-
管理节点
Manager Node
: 负责集群管理和调度任务。 -
工作节点
Worker Node
: 负责运行容器任务。
3.2 服务(Service)
服务是 Swarm
中的应用模型,它定义了容器的镜像、端口映射、环境变量等。服务可以扩展到多个任务(Task
),每个任务在不同的节点上运行。
3.3 任务(Task)
任务是服务的具体运行实例,每个任务对应一个容器。Swarm
将任务调度到集群中的节点上运行。
3.4 堆栈(Stack)
堆栈是一个应用的集合,通过 docker-compose.yml
文件定义。堆栈可以包含多个服务,使用 docker stack
命令部署。
四、工作
4.1 初始化集群
使用 docker swarm init
命令初始化 Swarm
集群,创建管理节点。
docker swarm init --advertise-addr <MANAGER-IP>
4.2 添加节点
使用 docker swarm join
命令将工作节点加入集群。
docker swarm join --token <SWARM-TOKEN> <MANAGER-IP>:2377
4.3 创建服务
使用 docker service create
命令在 Swarm
集群中创建服务。
docker service create --name myservice --replicas 3 -p 80:80 nginx
4.4 管理服务
可以使用 docker service ls
查看集群中的服务状态,使用 docker service ps myservice
查看服务任务的运行状态。
docker service ls
docker service ps myservice
4.5 更新服务
使用 docker service update
命令更新服务配置,例如更新镜像版本。
docker service update --image nginx:latest myservice
五、应用
DockerSwarm
适合在多台物理机器之间使用。因此, DockerSwarm
可以应用于生产环境。