概述
Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker
Compose 是一个在单个服务器或主机上创建多个容器的工具,可以将组成某个应该的多个docker容器编排在一起,同时管理。而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口(docker stack)统一管理这些Docker主机上的各种Docker资源。
stack 是构成特定环境中的 service 集合, 它是自动部署多个相互关联的服务的简便方法,而无需单独定义每个服务。
stack file 是一种 yaml 格式的文件,类似于 docker-compose.yml 文件,它定义了一个或多个服务,并定义了服务的环境变量、部署标签、容器数量以及相关的环境特定配置等。
Docker Swarm由两部分组成
- Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理;
- 应用编排:有一套API用来部署和管理容器
配置私有仓库
私有仓库不是集群必备的组件。集群的每个节点都需要安装镜像,如果不搭建私有仓库,下载镜像速度
比较耗时。
vi /etc/docker/daemon.json “insecure-registries”:[“192.168.198.101:5000”] systemctl daemon-reload systemctl restart docker
初始化第一个管理节点
关于advertise-addr和listen-addr这两个参数:
- 前者用来指定其他节点连接m0时的地址
- 后者指定承载swarm流量的IP和端口
- 会在本地新建docker网络
docker swarm init —advertise-addr 192.168.198.105:2377 —listen-addr 192.168.198.105:2377
运行之后就会加node接口和manager接口的提示
docker node ls docker network ls
如何加入新的节点
Docker Swarm的新节点加入策略是从管理节点获取一长串命令,被称为join token,任何想加入集群的机器只要自己执行这个join token即可加入Swarm集群;
如果有新的管理节点需要加入,在m0执行命令docker swarm join-token manager即可得到管理manager节点的join token,
如果有新的work节点需要加入,在m0执行命令docker swarm join-token worker即可得到管理work节点的join token
在manager节点执行。可以作为manager节点加入集群 docker swarm join-token manager 在manager节点执行。可以作为worker节点加入集群 docker swarm join-token worker docker node ls
manager节点说明
MANAGER STATUS列说明
- Leader 意味着该节点是使得群的所有群管理和编排决策的主要管理器节点。
- Reachable 意味着节点是管理者节点正在参与Raft共识。如果领导节点不可用,则该节点有资格被选为新领导者。
- Unavailable 意味着节点是不能与其他管理器通信的管理器。如果管理器节点不可用,您应该将新的管理器节点加入群集,或者将工作器节点升级为管理器。
AVAILABILITY列说明
- Active 意味着调度程序可以将任务分配给节点。
- Pause 意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。
- Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。
验证节点
master节点: docker info
work节点: docker info
节点权限提升/降低
将worker节点提升为manager节点,在manager节点执行如下命令: docker node promote work-01 docker node ls
将manager节点降低为worker节点,在manager节点执行如下命令: docker node demote work-02 docker node ls
脱离集群
在work节点使用命令:docker swarm leave 稍微等待几分钟,在manager节点使用命令:docker node ls,发现work节点已经脱离集群管理。
删除脱离集群的节点
先使用命令:docker node demote 节点名称。将某一个节点降为worker节点后,再删除。 使用命令:docker node rm 节点名称|节点ID 例如:docker node rm work-02 manager节点只能强制退出。命令:docker swarm leave —force。manager退出后意味着整个swarm
不复存在。
图形界面
官网地址
基础镜像
拉取镜像
docker pull dockersamples/visualizer:latest
备份镜像
docker save dockersamples/visualizer:latest -o dockersamples.visualizer.tar
还原镜像
docker load -i dockersamples.visualizer.tar
运行镜像
docker run -itd —name visualizer -p 8099:8080 -e HOST=192.168.198.105 -e
PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock
dockersamples/visualizer:latest
docker service create \
—name=viz \
—publish=8080:8080/tcp \
—constraint=node.role==manager \
—mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer
测试镜像
相关命令



