当前位置: 首页 > news >正文

Docker Swarm管理

Docker Swarm管理

前置知识点

Docker Swarm 是 Docker 公司 2014年出品的基于 Docker 的集群管理调度工具,能够将多台主机构建成一个Docker集群,并结合Overlay网络实现容器调度的互访
用户可以只通过 Swarm API 来管理多个主机上的 Docker
Swarm 群集包含 Manager 和 Worker 两类工作节点,基于Docker Engine 可以部署任何类型的工作节点
Swarm集群中的任意节点都可以成为管理节点;管理节点最好只作为管理,不运行容器
在Swarm集群中部署镜像创建一个服务时,一些达到应用上下文环境(运行环境)中需要各种服务配合工作,这样服务通常称为微服务
创建服务时,可以知道要使用的容器镜像及容器中要执行的命令,同时还可以定义以下选项:

  • 群集要对外服务的端口
  • 在集群中用于服务之间相连的overlay网络
  • 更新滚动策略
  • 群集总运行的副本数量

Docker Swarm基本特性

  • 去中心化设计
  • 声明式服务模型
  • 协调预期状态与实际状态的一致性
  • 多主机网络
  • 负载均衡
  • 安全策略
  • 滚动更新

Docker Swarm架构图

  • Docker Swarm提供了基本的集群能力,能够使多个Docker Engine组合成一个group,提供多容器服务
  • Swarm使用标准的Docker API

部署Docker Swarm集群

类型IP
manager192.168.10.101
worker192.168.10.102
worker192.168.10.103

1.导入镜像
2.创建Docker Swarm集群

docker swarm init --advertise-addr 192.168.10.101
//在哪台主机创建,创建节点默认为manager
[root@manager images]# docker swarm init --advertise-addr 192.168.10.101
Swarm initialized: current node (behn4l7i4iffgp34xjzvq4bt8) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-5d065cb6qzcd51gfzt0g67ya7hl0z6cucjlhlupcg8j2fvsaeq-4vzpxsr51kia1n8ql0h9ktmzx 192.168.10.101:2377        //其他主机运行后可以加入该集群To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Docker Swarm 节点管理

将docker节点的状态改为drain
docker node update --availability drain manager
active:可以调度容器
pause:维持原有容器的运行,不再接收新的容器
drain:将原有的容器进行迁移,不再接收新的容器

为节点增加标签,需要以键值对的形式添加,以下为两种方法
docker node update --label-add group=g2 worker01
docker service create --name mynginx --constraint 'node.labels.group==g2' hub.atomgit.com/amd64/nginx:1.25.2-perl

节点提权/降权
docker node promote worker01 worker02
docker node demote worker01 worker02

退出集群
docker swarm leave --force

Docker Swarm 服务管理

创建服务
docker service create -p 80:80 --replicas 2 --name web nginx
查看日志
docker service logs -f web
查看当前已经部署启动的全部应用服务
docker service ls
可以查询指定服务的详细信息
docker service ps web
显示服务详细信息
以 JSON 格式显示方法 Web 服务的详细信息
docker service inspect web
以易于阅读方式显示 Web 服务的详细信息
docker service inspect --pretty web

服务的扩容/缩容
docker service scale web=3 //将前面已经部署的 2 个副本的 Web 服务,扩容到 3 个副本
docker service scale web=1 //缩容就是设置的副本数小于当前副本数即可

删除服务
docker service rm web

滚动更新(即不需要关闭服务的更新,–update-delay是指更新间隔)
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
docker service create --replicas 3 --network my-network --name myweb hub.atomgit.com/amd64/nginx:1.25.2-perl
如果 Swarm 集群中其他节点上的 Docker 容器也使用 my-network 网络,那么处于该 Overlay 网络中的所有容器之间都可以进行通信

数据卷的创建与应用
创建数据卷
docker volume create product-kgc
将nginx容器连接到数据卷
docker service create --mount type=volume,src=product-kgc,dst=/usr/share/nginx/html --replicas 1 --name kgc-web-01 nginx

查看数据卷
docker volume inspect product-kgc

到worker01中查看数据是否同步

[root@worker01 ~]# cd /var/lib/docker/volumes/product-kgc/_data/ 
[root@worker01 _data]# mkdir test01 test02 
[root@worker01 _data]# docker ps
[root@worker01 _data]# docker exec -it 8875962fb67b bash
root@8875962fb67b:/# ls /usr/share/nginx/html/
http://www.lryc.cn/news/423463.html

相关文章:

  • Python | Leetcode Python题解之第335题路径交叉
  • Ubuntu视频工具
  • HBase snapshot+replication 测试
  • 代码随想录算法训练营第四十一天|图论基础、深度优先搜索理论基础、98. 所有可达路径、797. 所有可能的路径
  • STM32学习笔记09-SPI通信
  • 树------二叉树
  • 如何对加密后的数据进行模糊查询(面试题)
  • 【MYSQL】当前读和快照读
  • C语言-使用数组法,指针法实现将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。
  • Android gradle 构建
  • vulnhub系列:devguru
  • Robot Operating System——高质量图像传输
  • NLP_情感分类_预训练加微调方案
  • 全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典
  • DataWind看板绘制案例
  • Golang | Leetcode Golang题解之第335题路径交叉
  • C# 在Word中插入或删除分节符
  • 基于STM32+Qt设计的无人超市收银系统(206)
  • 开源免费的表单收集系统TDuck
  • Python 生成器、迭代器、可迭代对象 以及应用场景
  • 马斯克对欧盟的反应
  • uniapp + 安卓APP + H5 + 微信小程序实现PDF文件的预览和下载
  • Elasticsearch 8 RAG 技术分享
  • 根据字典值回显,有颜色的
  • 多台PC网络ADB连接同一台RK3399 Android7.1.2设备
  • 前端黑科技:使用 JavaScript 实现网页扫码功能
  • 【人工智能】全景解析:【机器学习】【深度学习】从基础理论到应用前景的【深度探索】
  • MySQL与PostgreSQL语法区别
  • vue2+OpenLayers 天地图上凸显出当前地理位置区域(4)
  • 基于Python、Django开发Web计算器