简介
Docker 官方推出的容器集群管理工具,基于 Go 语言实现
Docker Compose 是一个在单个服务器或主机上创建多个容器的工具
Docker Swarm 则可以在多个服务器或主机上创建容器集群服务
核心概念
Swarm 集群由 Manager 节点(管理者角色,管理成员和委托任务)和 Worker 节点(工作者角色,运行 Swarm 服务)组成。
Swarm 创建服务时,需要指定要使用的镜像、在运行的容器中执行的命令、定义其副本的数量、可用的网络和数据卷、将服务公开给外部的端口等等。
Nodes
Node就是计算机节点,也可以认为是一个Docker节点。
两类Node都可以运行Service,但只有Manager上才能执行运行命令。
Stack
Stack是一组Service,和docker-compose类似。
Service
Service是一类容器。
Service有两种运行模式,一是`replicated`,指定一个Service运行容器的数量;
二是`global`,在所有符合运行条件的Node上,都运行一个这类容器。
服务(Service)是一个抽象的概念,是对要在管理节点或工作节点上执行的任务的定义。
它是集群系统的中心结构,是用户与集群交互的主要根源。
Node分为两类:Manager和Worker。 一个Swarm至少要有一个
Manager,部分管理命令只有在Manager上才能使用。
Swarm 创建服务时,可以为服务定义以下信息:
- 服务名称;
- 使用哪个镜像来创建容器;
- 要运行多少个副本;
- 服务的容器要连接到哪个网络上;
- 要映射哪些端口。
Docker Swarm常用命令
创建服务
docker service create \
--image nginx \
--replicas 2 \
nginx
更新服务
docker service update \
--image nginx:alpine \
nginx
删除服务
docker service rm nginx
减少服务实例(这比直接删除服务要好)
docker service scale nginx=0
增加服务实例
docker service scale nginx=5
查看服务的容器状态
docker service ps nginx
查看服务的详细信息
docker service inspect nginx
核心命令说明
集群管理: docker swarm 子命令有 init, join, leave, update (docker swarm --help查看帮助)
节点管理: docker node子 命令有 accept, promote, demote, inspect, update, tasks, ls, rm (docker node --help查看帮助)
配置管理: docker config 子命令有 create, inspect, ls, rm (docker config--help查看帮助)
服务管理: docker service 子命令有 create, inspect, update, remove, tasks, ls, rm, ps (docker service--help查看帮助)
堆栈管理: docker stack 子命令有 deploy, services, ps, rm (docker stack--help查看帮助)