4.docker容器编排(docker compose 与 docker swarm)

news2025/6/10 0:46:05

本文目录

  • 1.容器编排
  • 2.Docker Compose
    • 1.Docker Compose 安装
    • 2.Docker Compose 示例
      • 1.使用 docker-compose 启动 nginx
      • 2.docker compose 常用命令
      • 3.校验 docker-compose.yml 是否有错误
      • 4.创建服务,启动容器
      • 5.弹性伸缩<扩缩容>
  • 3.Docker Swarm
    • 1.Swarm 架构图
    • 2.Swarm 节点说明
    • 3.Swarm 集群部署
      • 1.了解docker swarm 命令
      • 2.初始化集群
      • 3.work节点加入集群
      • 4.查看swarm集群节点信息
    • 4.部署服务命令
    • 5.部署服务
    • 6.弹性伸缩<扩缩容>
      • 缩容
    • 7.节点离开swarm集群
    • 8.删除离开的节点
    • 9.离开的节点,再次加入swarm集群

1.容器编排

容器编排:就是针对容器生命周期的管理,对容器的生命周期进行更快速方便的方式进行管理。

实例:一个java程序,依赖了mysql,redis,要想把 java 程序运行起来,则必须要先启动 mysql、redis。那么这三者这件就存在了依赖关联。
 
容器编排存在的意义:

  • 依赖管理,当一个容器必须在另一个容器运行完成后,才能运行时,就需要进行依赖管理
  • 副本数控制,容器有时候也需要集群,快速的对容器集群进行弹性伸缩
  • 配置共享,通过配置文件统一描述需要运行的服务相关信息,自动化的解析配置内容,并构建对应的服务
     

容器编排的出现,就是让开发者可以更简单的使用容器,省去频繁的写各种命令,docker 容器编排的出现,就类似 shell 脚本,一键搞定!

容器编排,主要有两种模式:

  • 基于Docker Compose(单机)
  • 基于Swarm(集群)

2.Docker Compose

  Docker Compose 是单机环境下的容器编排。
 
  有的时候我们会需要涉及到在一台机器部署多个容器,那么此时再手动的每次输入相关的一堆配置命令再来启动容器,还是产生了很多无意义的重复性劳动。针对单机的多容器部署的情况,Docker 为我们提供了一个单机版本的服务编排工具 docker-compose
 
  Docker-Compose 可以高效便捷的管理单机上运行的所有容器,它通过 yaml 配置文件的方式完成之前执行 docker run 命令所设置的所有参数,你可以先针对单机上的所有容器进行相关配置,配置完成后即可使用 docker-compose 对单机多容器进行高效的管理
 
  docker compose 容器编排,就是基于docker-compose.yml配置文件进行的容器编排。只要学会如何编写这个配置文件,就会用这个玩意了。

在这里插入图片描述

1.Docker Compose 安装

注意:需要注意的是,docker-compose 与docker有版本对应关系,因此在使用docker-compose时需要选择与已安装的docker版本相对应的docker-compose版本,否则可能会出现不兼容或无法正常工作的问题。但是!我在官网一致没有找到 docker 和 docker-compose 的对应关系表啊,有知道的小伙伴能评论发我一下吗??我只找到个 docker compose 发行版本,依赖的 docker 需要升级的版本,docker compose 发行版本地址:https://docs.docker.com/compose/release-notes。如下图所示:
 
在这里插入图片描述
因为 docker 使用的是最新版本:24.0.6,所以 docker compose 也使用了最新版本 2.21.0
 
还有一个对应关系表,在这里,也没有太看懂。地址:

  • https://docs.docker.com/compose/compose-file/compose-file-v2
  • https://docs.docker.com/compose/compose-file/compose-file-v3

Docker Compose 下载地址:https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64
 
在这里插入图片描述

# step 1:下载 docker compose 最新版本
curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# $(uname -s)  系统内核,即:linux
# $(uname -m)  系统架构,即:x86_64

# step 2:将可执行权限应用于二进制文件
sudo chmod +x /usr/local/bin/docker-compose

# step 3:创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# step 4:测试是否安装成功
docker-compose --version

在这里插入图片描述

2.Docker Compose 示例

# docker 启动 nginx命令:
docker run -d --restart=always --network xxx -v /www/abc:/usr/share/nginx/html -e APP_ENV=dev -p 80:80 --name nginx-compose  nginx
# 命令解释:
# -d  后台运行
# --restart=always   出现异常后总是自动重启
# --network xxx  自定义网络
# -v /www/abc:/usr/share/nginx/html  将[本地目录/www/abc]与[容器目录/usr/share/nginx/html] 进行数据卷绑定
# -e APP_ENV=dev  添加环境变量
# -p 80:80  端口映射
# --name  容器名称
# nginx  镜像名

上述命令,就可以在 docker 中启动一个 nginx 容器了。

  • 在不使用来回复制、粘贴的方式,如何将这条命令复用呢?
  • 这个命令还不算太长,如果命令更长的怎么办呢?
     

这样就需要用到 docker compose 了。

1.使用 docker-compose 启动 nginx

创建一个/opt/docker/nginx文件夹,在nginx文件夹下创建一个 docker-compose.yml 文件,进入文件,就可以编写 docker compose了

参考官网进行编写docker compose即可。因为docker compose的配置项太多了。截至 2023-09-14,使用的docker 24.0.6docker compose 2.21.0,所以此处直接使用 Compose V3版本。地址:https://docs.docker.com/compose/compose-file/compose-file-v3
 
配置超级多,根本记不住。所以参考官网来写就好了。
 
如果是一个普通的镜像,更多的关注【服务services】、【网络networks】、【数据卷volumes】这三个配置项就可以了
 
在这里插入图片描述

# docker 启动 nginx命令:
docker run -d --restart=always --network xxx -v /www/abc:/usr/share/nginx/html -e APP_ENV=dev -p 80:80 --name nginx-compose  nginx

上面的命令,转成 nginx compose 如下:

version: "3.8"
services: 
  nginx-demo-compose:
    contianer_name: "nginx-compose"
    image: nginx
    restart: always
    networks: nginx_net
    volumes:
      - /www/abc:/usr/share/nginx/html
    environment:
      - APP_ENV=dev
    ports:
      - 80:80
    
networks:
  nginx_net:
    ipam:
      driver: default
      config:
        - subnet: "172.16.238.0/24"

2.docker compose 常用命令

命令说明
build先构建完镜像,然后构建一个docker服务(如果开始就已经是个镜像了,则会跳过,命令不生效)
config规范、验证并查看 compose 文件,验证通过后,控制台会返回 compose 文件内容
cp在容器和本地文件系统之间复制文件/文件夹
create为 compose 中的 service 服务创建容器。
down停止并删除容器、网络
events从容器接收实时事件
exec在运行中的容器中执行命令
images列出创建的容器使用的镜像
kill强制停止服务容器
logs查看容器的日志输出
ls列出正在运行的 compose 项目
pause暂停 service 服务
port输出端口绑定的公共端口
ps列出容器
pull拉取 service 服务镜像
push推送 service 服务镜像
restart重启 service 服务容器
rm删除停止的服务容器
run在服务上运行一次性命令
start启动服务
stop停止服务
top显示正在运行的进程
unpause取消暂停服务
up创建并启动一个容器
version显示 Docker Compose 版本信息
wait等待阻塞直到第一个服务容器停止

提示: 更详细命令说明,使用 docker compose [命令] --help 了解。比如:docker compose up --help

扩缩容命令:

命令说明
docker compose up --scale 服务名=num扩容/缩容,服务名为compose文件服务名,num 为数量

3.校验 docker-compose.yml 是否有错误

# 进入/opt/docker/nginx 目录,在docker-compose.yml同级下,执行如下命令
docker compose config

在这里插入图片描述

4.创建服务,启动容器

进入/opt/docker/nginx 目录下,在docker-compose.yml同级目录下,开始操作

# step 1:创建服务(此处也可以启动compose中的特定服务:docker compose create 服务名)
docker compose create
# step 2:查看服务是否创建成功
docker compose ps -a
# step 3:后台启动容器
docker compose up -d

如图所示:

在这里插入图片描述

5.弹性伸缩<扩缩容>

扩缩容命令,如下:

docker compose up -d --scale 服务名=num

扩缩容注意:

  • 需要删除 container_name (docker 不允许多个容器具有相同的名称)
  • 修改 port 端口映射(一个服务只能一个端口,会提示端口占用问题)

修改后的 docker-compose.yaml 如下:

version: "3.8"
services: 
  nginx-demo:
    image: nginx
    restart: always
    networks: 
      - nginx_net
    volumes:
      - /www/abc:/usr/share/nginx/html
    environment:
      - APP_ENV=dev
    ports:
      - 80   # 此处80代表容器中的80端口,映射到本地的随机端口
    
networks:
  nginx_net:
    ipam:
      driver: default
      config:
        - subnet: "172.16.238.0/24"

修改配置信息后,执行 docker compose up -d,便会重新读取compose配置,启动容器

在这里插入图片描述

3.Docker Swarm

Swarm 也是需要提前安装好 Docker Compose !!!
 
  Swarm 是 Docker 公司推出的用来管理 docker 集群的平台,几乎全部用GO语言来完成的开发的, 它是将一群 Docker 宿主机变成一个单一的虚拟主机,Swarm 使用标准的 Docker API 接口作为其前端的访问入口,换言之,各种形式的DockerClient(compose, docker-py 等) 均可以直接与 Swarm 通信,甚至 Docker 本身都可以很容易的与 Swarm 集成,这大大方便了用户将原本基于单节点的系统移植到 Swarm 上,同时Swarm 内置了对 Docker 网络插件的支持,用户也很容易的部署跨主机的容器集群服务。
 
  Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务对于微服务的部署,显然 Docker Swarm 会更加适合
 
  从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,所以 swarm 我们无需手动安装。
 
  Swarm deamon只是一个调度器(Scheduler) + 路由器(router),Swarm自己不运行容器,它只是接受Docker客户端发来的请求,调度适合的节点来运行容器,这就意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,放Swarm重新恢复运行之后,他会收集重建集群信息。https://github.com/docker/swarm
 
  k8s 的出现早于 swarm,所以 swarm 的诞生,就是为了与 k8s 竞争,k8s 已经很成熟了,所以目前市场上用的 k8s 的还是挺多的,swarm 相对来说用的还不是提多。

1.Swarm 架构图

在这里插入图片描述

2.Swarm 节点说明

  运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node) 。
 
  Swarm节点分为管理 (manager) 节点工作 (worker) 节点
 
  管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,leader 通过 raft 协议实现。通常,第一个启用docker swarm的节点将成为leader,后来加入的都是follower。当前的leader如果挂掉,剩余的节点将重新选举出一个新的leader。每一个manager都有一个完整的当前集群状态的副本,可以保证manager的高可用。
 
  工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。worker节点之间,通过control plane进行通信,这种通信使用gossip协议,并且是异步的。
 
  来自 Docker 官网的这张图片形象的展示了集群中管理节点与工作节点的关系。

3.Swarm 集群部署

三台机器如下:每台机器都安装好 dockerdocker-compose

IP角色
192.168.204.101manager 管理节点
192.168.204.102worker 工作节点
192.168.204.103worker 工作节点

1.了解docker swarm 命令

# 查看docker swarm 命令
docker swarm --help

[root@localhost ~]# docker swarm --help

Usage:  docker swarm COMMAND

Manage Swarm

Commands:
  init        Initialize a swarm
  join        Join a swarm as a node and/or manager

Run 'docker swarm COMMAND --help' for more information on a command.
# 查看 swarm 集群状态
docker info
# 查看 swarm 集群节点信息
docker node ls

2.初始化集群

# 登录管理节点,并执行如下命令
docker swarm init --advertise-addr 192.168.204.101

# 返回如下信息
[root@localhost ~]# docker swarm init --advertise-addr 192.168.204.101
Swarm initialized: current node (2tlpn6ywqh9kms9ymgndpoinc) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3gcmbp3voxo05kw0q4lfe972a1uy7bbch59aabu55i3dnb2eeo-3a26jdpdkmdmvjuj54ki9c14h 192.168.204.101:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

3.work节点加入集群

复制初始化集群返回的命令,分别在 两个work 节点执行,将work节点加入 swarm 集群。
 
记得:关闭防火墙,或者开放端口 2377!!!
先关闭防火墙:systemctl stop firewalld
然后永久关闭防火墙:systemctl disable firewalld

# 加入swarm集群命令
docker swarm join --token SWMTKN-1-3gcmbp3voxo05kw0q4lfe972a1uy7bbch59aabu55i3dnb2eeo-3a26jdpdkmdmvjuj54ki9c14h 192.168.204.101:2377

加入成功如图所示:

在这里插入图片描述

4.查看swarm集群节点信息

进入 manager 管理节点,通过 docker node ls 查看集群节点信息。work 节点无法查看哦!

在这里插入图片描述

4.部署服务命令

在管理节点,通过命令 docker service 部署服务,通过docker service --help 查看详细命令

命令说明
create创建一个新的服务
inspect展示一个/多个服务的详细信息
logs查看服务/任务的日志
ls显示所有service服务
ps显示一个/多个服务的所有task
rm删除一个/多个服务
rollback恢复service服务的配置信息
scale弹性扩缩容service服务
update更新service服务

5.部署服务

在管理节点,通过命令 docker service 部署服务,此处来部署一个 nginx 服务

# 部署一个nginx服务
docker service create --replicas 1 -p 80:80 --name nginx_swarm nginx
# --replicas 1  一个副本
# -p 80:80 端口映射
# --name 自定义名称

在这里插入图片描述

# manager管理节点, 查看所有service服务
docker service ls

在这里插入图片描述

# 在 manager 和 work 节点,都执行 docker ps 命令,查看服务是否启动成功
docker ps

在这里插入图片描述

# 访问服务
curl 192.168.204.101

在这里插入图片描述

如果要想在管理端去访问 curl 192.168.204.202 和 192.168.204.203,也显示服务正常。
需要先扩容至副本数为 3,即可。
 
提示:另一种情况:副本数为3后,现在指定节点203退出swarm集群,此时 3 个副本就会重新分配(比如:201机器2个副本,202机器1个副本,如果此时203节点重新加入后,即使203这个节点上没有这个副本,集群会帮我们自动分发服务,你同样还是可以访问curl 192.168.204.203 成功)

6.弹性伸缩<扩缩容>

以下命令,在 manager 管理节点执行操作

# 副本数扩容(nginx_swarm:服务名)
docker service update --replicas 3 nginx_swarm

错误提示:error creating external connectivity network: Failed to Setup IP tables: U
解决方案:关闭防火墙后,需要重启 docker 服务
命令:service docker restart

在这里插入图片描述
在这里插入图片描述

缩容

修改 --replicas 的个数即可。

7.节点离开swarm集群

# 哪个节点要离开集群,在指定节点执行如下命令
docker swarm leave

管理节点查看节点信息,可以看到有个节点已经Down
在这里插入图片描述

8.删除离开的节点

以下命令,在 manager 管理节点执行操作

# 删除节点(nodeId 通过 docker node ls 查看)
docker node rm [nodeId]

在这里插入图片描述

9.离开的节点,再次加入swarm集群

在要加入集群的节点执行如下命令:

# 再次执行刚才的,加入swarm集群命令即可
docker swarm join --token SWMTKN-1-3gcmbp3voxo05kw0q4lfe972a1uy7bbch59aabu55i3dnb2eeo-3a26jdpdkmdmvjuj54ki9c14h 192.168.204.101:2377

在这里插入图片描述


本文结束,谢谢

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

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

相关文章

华为云云耀云服务器实例管理域名

目录 域名概述 通过域名访问网站流程 域名注册、解析和备案的关系 域名解析 如何修改 域名概述 部署一个网站或Web应用后&#xff0c;若要使该网站能够在Internet上通过域名直接访问&#xff0c;需要为网站注册域名、备案以及配置解析。 通过域名访问网站流程 1、注册域…

虚拟电影 故事板创作 Frameforge Studio 4.0.6 Crack

虚拟电影工作室 故事板创作 Frameforge Storyboard Studio 4.0.6 是一个功能齐全的故事板程序&#xff0c;由著名导演及其要求共同创建。该软件将节省大量的时间&#xff0c;金钱和头痛&#xff0c;如果你是一个导演&#xff0c;在电影行业工作或VFX主管-这就是你要找的&#x…

小程序分销商城功能展示;

很多客户想要搭建自己的小程序商城&#xff0c;各家公司报价也是从几百到几千都不等&#xff0c;那么商城小程序开发到底需要多少钱呢&#xff1f;商城小程序一般要做哪些功能呢&#xff1f; 1、商品展示 一个商城型小程序&#xff0c;商品展示功能是必须要有的&#xff0c;这…

全球与中国BGO晶体市场:增长趋势、竞争格局与前景展望

BGO晶体&#xff0c;全名为Bismuth Germanate Scintillation Crystal&#xff08;铋锗酸盐闪烁晶体&#xff09;&#xff0c;是一种用于探测放射性粒子和射线的闪烁晶体材料。它的主要成分是铋氧化物&#xff08;Bi4Ge3O12&#xff09;&#xff0c;其中铋和锗的特性使得这种晶体…

用 Canvas 画简易手电筒

本文章适合人群: 具备 html、js 基础的人对于想入门 canvas 的人 本文章较为简单&#xff0c;大佬可略过 实验结果 一个跟随着鼠标移动的圆圈。 教学 要实现一个动态手电筒效果&#xff0c;我们可以使用Canvas来绘制一个黑色的遮罩层&#xff0c;并通过鼠标或触摸事件来控…

JLink更新固件成砖头的QA

问题&#xff1a;用了新版的keil&#xff0c;更新固件后不能用了&#xff0c;怎么办啊 插上Jlink之后&#xff0c;驱动提醒您更新最新的V11版本固件&#xff0c;然后点了更新&#xff0c;更新结束之后/重新上电之后&#xff0c;Jlink的灯会变成红色闪烁5次然后变绿色&#xff0…

本地项目上传至码云gitee

1、springboot-mgx是需要上传的项目 2、码云后台创建一个新的仓库 3、创建完成后&#xff0c;复制下来https链接&#xff0c;后面要用到。 4、进入项目要上传的文件中 5、对git进行初始化&#xff0c;git指令 git init 6、 上传项目至gitee &#xff08;1&#xff09;连接远…

热烈祝贺润物成功入选航天系统采购供应商库

经过航天系统采购平台的严审&#xff0c;湖北润物食品有限公司成功入选中国航天系统采购供应商库。航天系统采购平台是航天系统内企业采购专用平台&#xff0c;服务航天全球范围千亿采购需求&#xff0c;目前&#xff0c;已有华为、三一重工、格力电器、科大讯飞等企业、机构加…

基于SSM的客户管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

重建大师密集匹配失败,是什么原因?

答&#xff1a;影像路径问题或者缓存不足&#xff0c;检查影像有无访问权限&#xff0c;清理下磁盘空间。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c;POS信息及像控点&#xff0c;输出高精…

【数据分享】1901-2022年我国省市县镇四级的逐年最高气温数据(免费获取/Shp/Excel格式)

气象数据在日常研究中非常常用&#xff0c;之前我们分享过来自国家青藏高原科学数据中心提供的1901-2022年1km分辨率逐月最高气温栅格数据&#xff0c;2001-2022年我国省市县镇四级的逐月最高气温数据&#xff0c;以及基于该栅格数据处理得到的1901-2022年1km分辨率的逐年最高气…

深度学习-全连接神经网络-训练过程-欠拟合、过拟合和Dropout- [北邮鲁鹏]

目录标题 机器学习的根本问题过拟合overfitting泛化能力差。应对过拟合最优方案次优方案调节模型大小约束模型权重&#xff0c;即权重正则化(常用的有L1、L2正则化)L1 正则化L2 正则化对异常值的敏感性随机失活(Dropout)随机失活的问题 欠拟合 机器学习的根本问题 机器学习的根…

SpringCLoud——服务的拆分和远程调用

服务拆分 服务拆分注意事项 一般是根据功能的不同&#xff0c;将不同的服务按照功能的不同而分开。 微服务拆分注意事项 不同微服务&#xff0c;不要重复开发相同业务微服务数据独立&#xff0c;不要访问其他微服务的数据库微服务可以将自己的业务暴露为接口&#xff0c;供…

「打造个人网盘」教你一招使用Net2FTP即可搭建免费web文件管理器

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

VR全景算不算好的创业项目?有哪些特性?

现在是全民创业的时代&#xff0c;大家都在找创业项目&#xff0c;那么什么是好的创业项目呢&#xff1f;有人会问VR全景算不算创业好项目呢&#xff1f;一般情况下好的创业项目&#xff0c;发展前景和市场消费群体都是比较大的&#xff0c;市场需求大才能满足多数消费者的需求…

acclerator和tensorboard共同使用采坑记录

acclerator和tensorboard共同使用采坑记录 问题描述可采用的方案可采用的方案1可采用的方案2其他可采用方案可采用方案的总结 建议的最终方案 问题描述 最近在做用多个GPU训练&#xff0c;我选择的是hugging face开源团队的acclerate库中的accelerator类来实现的&#xff0c;在…

多元函数的微分法

目录 复合函数微分法 隐函数微分法 复合函数求导与全微分 隐函数偏导数与全微分 复合函数微分法 复合函数微分法是一种求导方法&#xff0c;用于计算复合函数的导数。 假设有一个复合函数yf(u)&#xff0c;其中ug(x)&#xff0c;则复合函数微分法可以用于计算y对x的导数。根…

3D模型转换工具HOOPS Exchange如何实现OBJ格式轻量化?

什么是OBJ模型轻量化&#xff1f; OBJ格式是一种常用的三维模型文件格式&#xff0c;通常包含模型的顶点、法线、纹理坐标等信息&#xff0c;但有时候这些信息可能会使模型文件变得较大&#xff0c;不利于网络传输、加载和运行。 OBJ&#xff08;Object&#xff09;模型轻量化…

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

流支付协议 Zebec Protocol 正在积极的拓展自身生态&#xff0c;随着此前其全新路线图的发布&#xff0c;揭示了该生态从 Web3 世界向 Web2 世界跨越的决心。根据其最新路线图&#xff0c;Zebec Protocol 正在从最初构建在 Solana 上的流支付协议&#xff0c;拓展为囊括模块化公…

Linux下修改jar包中的配置文件application.conf

文件位置 jar包文件工程目录 打包后解压jar包目录 提取和上传 jar tf XXX.jar # 获取包内文件 application.conf是jar包的配置文件&#xff0c;如果修改需要 提取文件 jar xf my-app.jar application.conf 修改后上传文件 jar uf my-app.jar application.conf