Docker Service 创建

news2024/11/16 22:43:58

Docker Swarm Mode
Docker Swarm 集群搭建
Docker Swarm 节点维护
Docker Service 创建

service 只能依附于 docker swarm 集群,所以 service 的创建前提是,swarm 集群搭建完毕。

1. 创建 service

docker service create 命令用于创建 service,需要在 manager 中运行。与创建容器的命令 docker run 非常类似

目前的节点状态如下:

在这里插入图片描述

在 swarm 中创建一个运行 tomcat:8.5.49 镜像的 service,服务名称为 toms,包含3 个副本 task,对外映射端口号为 9000。当一个 service 包含多个 task 时,对 service 的访问最终会通过 负载均衡 方式转发给各个 task 处理。这个负载均衡为轮询策略

docker service create --name toms --replicas 3 -p 9000:8080 tomcat:8.5.49

在这里插入图片描述

1.1 查看服务列表

docker service ls 命令用于查看当前 swarm 集群中正在运行的 service 列表信息。一个swarm 中可以运行多个 service。
在这里插入图片描述

1.2 查看服务详情

通过 docker service inspect [service name|service ID]命令可以查看指定 service 的详情。

在这里插入图片描述

1.3 用户访问服务

服务创建完毕后,该服务也就运行了起来。此时就可通过浏览器进行访问了

在这里插入图片描述

也可以直接通过ip访问,通过域名访问需要在本机C:\Windows\System32\drivers\etc\hosts文件中加入如下:

192.168.137.100 docker
192.168.137.101 docker2
192.168.137.102 docker3
192.168.137.103 docker4
192.168.137.104 docker5

1.4 查看 task 节点

docker service ps [service name|service ID]命令可以查看指定服务的各个 task 所分配的节点信息。

在这里插入图片描述

可以看到,toms 服务的 3 个 task 被分配到了 docker2、docker3、docker 三个主机。其中 ID 为task ID,NAME 为 task 的 name。task nameservice name 后添加从 1 开始的流水号形成的。

1.5 查看指定节点的 task

通过 docker node ps [node]可以查看指定节点中运行的 task 的信息。默认查看的是当前节点的task 信息。

在这里插入图片描述

1.6 查看服务日志

通过 docker service logs 命令可以查看指定 service 或 task 的日志。通过 docker service logs –f 命令可动态监听指定 service 或 task 的日志。

(1)查看 service 日志

通过 docker service logs [service name|service ID]命令可以查看指定 service 的日志。这些日志实际是所有 task 在节点容器中的运行日志。

# -f 实时进行显示,-t 日志要携带时间戳,-–tail 100 显示最新的100条数据 
docker logs -f -t --tail 200 <service name|service ID>

(2)查看 task 日志

通过 docker service logs [task ID]命令可以查看指定 task 的日志。注意,这里只能指定taskID,不能指定 task name(task name不唯一)。这些日志实际是指定 task 在节点容器中的运行日志。

docker service logs -f -t -n 5 <task ID>

在这里插入图片描述

有时候server启动失败,通过logs查看日志什么也没有,可以通过docker service ps --no-trunc <service>查看错误信息

1.7 查看节点容器

在 docker2、docker3、docker 三个主机中查看正在运行的容器列表,可以看到相应的tomcat 容器。

在这里插入图片描述

容器的 NAME 是由 task name 后添加 task ID 形成的。在 docker4、docker5 主机中是没有该服务的 task 容器的。

1.8 task伸缩

 根据访问量的变化,需要在不停止服务的前提下对服务的 task 进行扩容/缩容,即对服务进行伸缩变化。有两种实现方式:

(1)docker service update 方式

通过 docker service update --replicas 命令可以实现对指定服务的 task 数量进行变更。

docker service update --replicas 5 toms

在这里插入图片描述

(2)docker service scale 方式

通过 docker service scale 命令可以为指定的服务变更 task 数量。

# docker service scale SERVICE=REPLICAS
docker service scale toms=7
docker service scale toms=3

(3)暂停节点的 task 分配

生产环境下,可能由于某主机性能不高,在进行 task 扩容时,不想再为该主机再分配更多的 task,此时可通过 pause 暂停该主机节点的可用性来达到此目的。

docker node update --availability pause <nodeID>

在这里插入图片描述

更新前有3个task,分别在docker、docker2、docker3节点上,更新副本数为10后,docker2 上边还是只有一个task

(4)清空 task

由于某节点出现了性能问题,需要停止服务进行维修,此时最好是将该节点上的task 清空,以不影响 service 的整体性能。

通过 docker node update –availability drain 命令可以清空指定节点中的所有 task。

docker node update --availability drain <nodeId>

在这里插入图片描述

清空前每个节点有一个task,将dcoker3、docker4清空后,docker3、docker4两个节点上没有task了,但是总的toms服务的task总量没有减少。全部都分配到了docker、docker2、docker5三个节点上了,这个结果是由编排器与分发器共同维护的。

1.9 task 容错

当某个 task 所在的主机或容器出现了问题时,manager 的编排器会自动再创建出新的task,然后分发器会再选择出一台 available node 可用节点,并将该节点分配给新的 task。

# 在docker5中
docker ps
docker stop <containerID>

# 在manager节点重新查看服务的task节点信息
docker service ps toms

在这里插入图片描述

在docker5中停掉容器后,再查看服务的task节点信息可以看到,原来docker5中的task已经是Shutdown状态了,又新增了一个新的toms.5的task

2. 服务删除

通过 docker service rm [service name|service ID]可以删除指定的一个或多个 service。

删除后,该 service 消失,当然,该 service 的所有 task 也全部删除,task 相关的节点容器全部消失。

3. 滚动更新

当一个 service 的 task 较多时,为了不影响对外提供的服务,在对 service 进行更新时可采用滚动更新方式。

需求:将原本镜像为 tomcat:8.5.49 的 service 的镜像滚动更新为tomcat:8.5.39

  1. 创建一个包含 10 个副本 task 的服务,该服务使用的镜像为 tomcat:8.5.49。
docker service create \
--name toms \
--replicas 10 \
--update-parallelism 2 \
--update-delay 3s \
--update-max-failure-ratio 0.2 \
--update-failure-action rollback \
--rollback-parallelism 2 \
--rollback-delay 3s \
--rollback-max-failure-ratio 0.2 \
--rollback-failure-action continue \
-p 9000:8080 \
tomcat:8.5.49
  1. 将 service 使用的镜像由 tomcat:8.5.49 更新为 tomcat:8.5.39。

在这里插入图片描述

  1. 观察更新和创建的过程
docker service ps toms

会发现这个更新的过程就是前面在创建服务时指定的那样,每次更新 2 个 task,更新间隔为 3 秒。

3.1 更新回滚

在更新过程中如果更新失败,则会按照设置的回滚策略进行回滚,回滚到更新前的状态。但也可通过命令方式手工回滚。

# 按照前面设置的每次回滚 2 个 task,每次回滚间隔 3 秒进行回滚
docker service update --rollback toms

在这里插入图片描述

需要注意,task name 保持未变,但 task ID 与原来的 task ID 也是不同的,并不是恢复到了更新之前的 task ID。即编排器新创建了 task,并由分发器重新为其分配了 node。

4. service 全局部署模式

docker service create 命令中通过--mode 选项可以指定要使用的 service 部署模式,默认为 replicated 模式。

docker service create --name toms --mode global -p 9000:8080 tomcat:8.5.49

该模式会在每个节点上分配一个 task。

4.1 task 伸缩

对于 global 模式来说,若要实现对 service 的 task 数量的变更,必须通过改变该 servicve所依附的 swarm 集群的节点数量来改变。节点增加,则 task 会 自动增加;节点减少,则 task会自动减少

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试工程师应具备的软实力

测试工程师不仅要有过硬的技术实力&#xff0c;也需要培养软实力。硬实力决定着起点是基础&#xff0c;软实力决定能够走的多快多远。在平常的工作中需要不断升级打怪&#xff0c;修炼并提高自身的软实力。 特别是作为一名测试工程师&#xff0c;未来的转型方向很多&#xff0…

天锐绿盾——应用服务系统接入-集成OA审批

天锐绿盾是一种加密软件&#xff0c;而集成OA审批是指将天锐绿盾与OA系统进行集成&#xff0c;实现审批流程的自动化和信息化。 PC访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 在集成过程中&#xff0c;可以在天锐绿盾…

Docker 的数据管理与网络通信以及Docker镜像的创建

目录 Docker的数据管理 1、数据卷 2、数据卷容器 3、端口映射 4、容器互联 二、Docker网络 1、Docker网络实现原理 2、Docker的网桥模式 1&#xff09;Host 2&#xff09;Container 3&#xff09;none 4&#xff09;bridge 5&#xff09;自定义网络 3、创建自定义…

博客后台模块续更(六)

十三、后台模块-用户列表 1. 查询用户 需要用户分页列表接口。 可以根据用户名模糊搜索。 可以进行手机号的搜索。 可以进行状态的查询。 1.1 接口分析 请求方式请求路径是否需求token头GETsystem/user/list是 请求参数query格式&#xff1a; pageNum: 页码pageSize…

ROI的投入产出比是什么?

ROI的投入产出比是什么&#xff1f; 投入产出比&#xff08;Return on Investment, ROI&#xff09;是一种评估投资效益的财务指标&#xff0c;用于衡量投资带来的回报与投入成本之间的关系。它的计算公式如下&#xff1a; 投资收益&#xff1a;指的是投资带来的净收入&#x…

mysql下载和安装,使用

先下载安装 官方下载 已下载备份软件 安装&#xff0c;一路下一步设置环境变量 4. 打开一个cmd&#xff0c;输入mysql -u root -p

某马机房预约系统 C++项目(二) 完结

8.4、查看机房 8.4.1、添加机房信息 根据案例&#xff0c;我们还是先在computerRoom.txt中直接添加点数据 //几机房 机器数量 1 20 2 50 3 1008.4.2、机房类创建 ​ 同样我们在头文件下新建一个computerRoom.h文件 添加如下代码&#xff1a; #pragma once #include<i…

“比特币技术与链上分析:解析市场机会,掌握暴利投资策略!“

比特币再次达到 30,000 美元的感觉从来没有这么好过&#xff0c;尤其是在 25,000 美元和 27,000 美元之间波动了很长一段时间之后。 令人惊讶的是&#xff0c;这种情况发生在加密货币恐惧与贪婪指数被认为是“中性”的情况下&#xff0c;尽管它现在在转变为“贪婪”状态。 同样…

【USRP】通信基带物理层历史

无线通信的基带物理层开发历史涵盖了从早期无线技术到当前复杂的移动通信标准的各种进步。以下是关于无线通信基带物理层开发的简要历史概述&#xff1a; 无线电初期&#xff1a;20世纪初&#xff0c;Guglielmo Marconi等人通过无线电进行了早期的无线通信尝试。这些早期的尝试…

如何学会从产品经理角度去思考问题?

如何学会从产品经理角度去思考问题&#xff1f; 从产品经理的角度思考问题意味着你需要关注产品从构思到上市全过程中的各个方面&#xff0c;包括用户需求、市场趋势、设计、开发、测试、上市后的用户反馈等。以下是一些策略和方法&#xff0c;帮助你培养从产品经理角度思考问…

LeetCode刷题---简单组(一)

文章目录 &#x1f352;题目一 507. 完美数&#x1f352;解法一 &#x1f352;题目二 2678. 老人的数目&#x1f352;解法一 &#x1f352;题目三 520. 检测大写字母&#x1f352;解法一&#x1f352;解法二 &#x1f352;题目一 507. 完美数 对于一个 正整数&#xff0c;如果它…

Docker Swarm Mode

Docker Swarm Mode Docker Swarm 集群搭建 Docker Swarm 节点维护 Docker Service 创建 先看docker官网上的一句话&#xff1a;Docker Swarm mode is built into the Docker Engine. Do not confuse Docker Swarm mode with Docker Classic Swarm which is no longer actively …

香港优才计划转永居身份掏心经验以及好处分享!

香港优才计划转永居身份掏心经验以及好处分享&#xff01; 随着今年申请香港优才计划的人越来越多&#xff0c;拿到签证需要转永居身份的人也越来越多&#xff01;随之面临的问题就是&#xff1a;害怕转永居身份失败&#xff01; 当然香港优才计划申请必须满足的基本条件&#…

rust学习——泛型 (Generics)

文章目录 泛型 Generics泛型详解结构体中使用泛型枚举中使用泛型方法中使用泛型为具体的泛型类型实现方法 const 泛型&#xff08;Rust 1.51 版本引入的重要特性&#xff09;const 泛型表达式 泛型的性能 泛型 Generics Go 语言在 2022 年&#xff0c;就要正式引入泛型&#xf…

zip()并行迭代多个序列

names("猪八戒","孙悟空","沙和尚","唐僧") levels("二师兄","大师兄","三师兄")for name,level in zip(names,levels):print("{0}---{1}".format(name,level))print()for i in range(min(le…

SpringBoot整合注解式mybatis

1. 创建Spring Boot项目&#xff1a; 创建一个Spring Boot项目&#xff0c;可以使用Spring Initializer或手动创建 2. 添加依赖&#xff1a; 在pom.xml文件中&#xff0c;添加Spring Boot、MyBatis和数据库驱动程序的依赖&#xff0c;就像之前所示。 <dependencies><…

2023应届生简历模板,免费下载!

2023应届生该如何免费下载好看又实用的简历模板&#xff1f;那一定要收藏这5个简历模板网站&#xff0c;真的免费下载&#xff0c;上万个模板&#xff0c;总有适合你的。赶紧收藏起来。 150免费简历模板 文末领取&#xff01;&#xff01;&#xff01; 150免费简历模板 文末领…

基于OpenAPI、freemarker动态生成swagger文档

前言 spring项目中可以使用springfox或者springdoc&#xff0c;通过写注解的方式生成swagger文档&#xff0c;下面介绍一种不写注解&#xff0c;动态生成swagger文档的方式&#xff0c;在某些场景会适用&#xff0c;例如接口是动态生成的&#xff0c;此时swagger就不能通过注解…

使用序列化技术保存数据 改进 IO流完成项目实战水果库存系统

上一节内容是 使用IO流完成项目实战水果库存系统https://blog.csdn.net/m0_65152767/article/details/133999972?spm1001.2014.3001.5501 package com.csdn.fruit.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java…

ZYNQ7020开发(二):zynq linux系统编译

文章目录 一、编译前准备二、SDK编译三、编译步骤总结四、问题汇总 一、编译前准备 1.设置环境变量 source /opt/pkg/petalinux/2020.2/settings.sh/opt/pkg/petalinux/2020.2是上一节petalinux的安装目录 2.创建 petalinux 工程 进入petalinux安装目录(例如&#xff1a;/op…