Docker Swarm 日常管理
前提:基础Docker Swarm环境
服务、容器、任务三者关系:
节点管理
变更管理
- 节点的可用性(AVAILABILITY)状态
状态 | 说明 |
---|---|
Active | 集群中该节点可被指派任务 |
Pause | 集群中该节点不可指派新的任务,但其他已存在的任务仍保持运行 |
Drain | 集群中该节点不可指派新的任务,Swarm调度器停止已存在的任务,并将它们调度到可用节点上 |
常见的变更操作:
- 设置管理节点只具有管理功能
- 对服务进行停机维护,可以修改AVAILABILITY为Drain状态
- 暂停一个节点,使该节点不再接收新的任务
- 恢复一个不可用或者暂停的节点
#将管理节点的AVAILABILITY值修改成Drain
docker node update --availability drain manager
docker node ls
添加标签元数据
- 支持给每个节点添加标签元数据
- 根据标签可选择性地调度某个服务部署到期望的一组节点上
格式:docker node update --label-add 键值
docker node update --label-add chenshiyi-01 worker01
节点提权/降权
#将工作节点变为管理节点
docker node promote worker01 worker02
docker node ls
#将管理节点变为工作节点
docker node demote worker01 worker02
docker node ls
退出集群
使用docker swarm leave
可使管理节点、工作节点退出集群,但集群中有其他工作节点,管理节点退出集群需使用docker swarm leave --force
;工作节点退出集群后可重新加入集群中,但管理节点不可以。
docker swarm leave --force
docker swarm leave
服务管理
创建服务
格式:docker service create
#使用nginx镜像创建web服务,并指定服务副本数为2
docker service create --replicas 2 --name web nginx
#查看当前已部署成功的服务信息
docker service ls
#查看指定服务信息
docker service ps web
显示服务详细信息
#显示服务详细信息,以JSON格式显示:
docker service inspect web
#显示服务详细信息,以阅读方式显示:
docker service inspect --pretty web
服务的扩容/缩容
格式:docker service scale 服务 ID=服务 Task 总数
#将副本数扩充为3
docker service scale web=3
#将副本数缩减为1
docker service scale web=1
删除服务
格式:docker service rm 服务名称
#删除集群中所有web服务
docker service rm web
docker service ps web
滚动更新
#创建服务并通过--update-delay设置容器更新时间间隔,每次成功部署一个服务后,延迟10s,然后更新下一个服务。
docker service create \
> --replicas 3 \
> --name redis \
> --update-delay 10s \
> redis:3.0.6
#更新以部署服务的镜像版本,但之前的容器不会删除,只会停止。
docker service update --image redis:3.0.7 redis
网络管理
添加自定网路
#创建Overlay网络
docker network create --driver overlay my-network
#创建服务时,通过--network指定网络为已存在的Overlay网络
docker service create\
> --replicas 3 \
> --network my-network \
> --name myweb \
> nginx \
数据卷管理
创建并应用数据卷
格式:docker service create
#创建数据卷并查看创建的数据卷
docker service create test-01
docker volume ls
#应用数据卷
docker service create --mount type=volume,src=test-01,dst=/usr/share/nginx/html --replicas 3 --name kgc-web-01 nginx
#查看数据卷详细信息
docker service ps test-01
docker volume inspect test-01
#查看数据同步
cd /var/lib/docker/volumes/test-01/_data/
mkdir test01 test02
#查看容器ID并进入容器中验证
docker ps
docker exec -it
ls /usr/share/nginx/html/