共计 2000 个字符,预计需要花费 5 分钟才能阅读完成。
Docker Swarm 资源管理
Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。
使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。
注意:Docker1.12.0 之后版本,Swarm 模块已经内嵌入 Docker 引擎,成为 Docker 子命令 docker swarm, 绝大多用户已经开始使用 Swarm 模块,Docker 引擎 API 已经删除 Docker Swarm。
基本概念
Swarm 是使用 SwarmKit 构建的 Docker 引擎内置 (原生) 的集群管理和编排工具。使用 Swarm 集群之前需要了解以下几个概念。
节点
运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样运行 Docker 的主机就成为一个 Swarm 集群的节点(node)。
节点分为管理 (manager) 节点和工作 (worker) 节点。
- 管理节点用于 Swarm 集群的管理,docker swarm 集合基本只能在管理节点执行。
- 工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。
集群中管理节点与工作节点的关系
服务和任务
任务 (Task) 是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。
服务 (Services) 是指一组任务的集合,服务定义了任务的属性。
服务有两种模式:
- replicated services 按照一定规则在各个工作节点上运行指定个数的任务。
- global services 每个工作节点运行一个任务
两个模式通过 docker service create 的 –mode 参数指定
容器、任务、服务的关系
创建 Swarm 集群
了解 Swarm 集群由管理节点和工作节点组成后,我们创建一个包含一个管理节点和两个工作节点的最小 Swarm 集群。
初始化集群
使用 docker swarm init 在本地初始化一个 Swarm 集群。
docker swarm init --advertise-addr 192.168.1.1
如果你的 Docker 主机有多个网段,拥有多个 IP,必须使用 –advertise-addr 指定 IP。执行 docker swarm init 命令的节点自动成为管理节点。
注意:使用 docker swarm init
增加工作节点
在另外两台服务器上执行上一步创建管理节点时候的输出的加入 swarm 集群的全集
docker swarm join \
--token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx \
192.168.1.1:2377
查看集群
在管理节点使用 docker node ls 查看集群。
docker node ls
部署服务
使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点运行。
新建服务
在创建好的 Swarm 集群中运行 nginx 服务
docker service create --replicas 3 -p 80:80 --name nginx nginx:latest
现在我们使用浏览器,输入任意节点 IP,即可看到 nginx 默认页面。
查看服务
查看当前 Swarm 集群运行的服务
docker service ls
查看某个服务的详情
docker service ps nginx
查看某个服务的日志
docker service logs nginx
删除服务
从 Swarm 集群中移除某个服务
docker service rm nginx
资源管理
前面利用 Docker Swarm 快速搭建一个最小集群,也可以在集群上部署服务,但是会发现 swarm 中并没有提供统一入口查看节点的资源使用情况。这时我们可以用图形化管理工具 Portainer 帮我们管理 swarm 集群。
Portainer 是 Docker 的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像、创建容器等操作)、事件日志显示、容器控制台操作、Swarm 集群和服务等集中管理和操作、登陆用户管理和控制等功能。功能十分全面,基本能满足小型单位对容器管理的全部需求。
Portainer 集群运行
下载 Portainer 镜像
# 查询当前有哪些 Portainer 镜像
docker search portainer
docker pull portainer/portainer
安装 Portainer(管理节点)
docker run -d -p 9000:9000 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer
Portainer 配置
设置管理员帐号密码
Portainer 界面内容
: