Docker

Docker-compose

单个 Dockerfile 可定义单容器应用,但日常工作中,Web 项目等常需 Web 服务、数据库、负载均衡等多容器配合,手动按序启停容器会导致维护量大、效率低。

Docker Compose 是高效的多容器管理工具,通过单个 docker-compose.yml(YAML 格式)文件定义关联资源集,轻松管理容器。

其有两个核心概念:

  • 服务(Service):一个应用的容器,可包含多个运行相同镜像的容器实例。
  • 项目(Project):由一组关联服务容器组成的完整业务单元,定义于 docker-compose.yml 中。

Compose 默认管理对象为项目,通过子命令对项目内容器进行生命周期管理。它最初由 Python 编写,后用 Go 重写,调用 Docker API 管理容器,支持所有兼容 Docker API 的平台。

命令说明

[root@docker ~]# docker compose -h
Flag shorthand -h has been deprecated, please use --helpUsage:  docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-resources              Include all resources, even those not used by services--ansi string                Control when to print ANSI control characters("never"|"always"|"auto") (default "auto")--compatibility              Run compose in backward compatibility mode--dry-run                    Execute command in dry run mode--env-file stringArray       Specify an alternate environment file-f, --file stringArray           Compose configuration files--parallel int               Control max parallelism, -1 for unlimited (default -1)--profile stringArray        Specify a profile to enable--progress string            Set type of progress output (auto, tty, plain,quiet) (default "auto")--project-directory string   Specify an alternate working directory(default: the path of the, first specified, Composefile)-p, --project-name string        Project nameCommands:attach      Attach local standard input, output, and error streams to a service's running containerbuild       Build or rebuild servicesconfig      Parse, resolve and render compose file in canonical formatcp          Copy files/folders between a service container and the local filesystemcreate      Creates containers for a servicedown        Stop and remove containers, networksevents      Receive real time events from containersexec        Execute a command in a running containerimages      List images used by the created containerskill        Force stop service containerslogs        View output from containersls          List running compose projectspause       Pause servicesport        Print the public port for a port bindingps          List containerspull        Pull service imagespush        Push service imagesrestart     Restart service containersrm          Removes stopped service containersrun         Run a one-off command on a servicescale       Scale servicesstart       Start servicesstats       Display a live stream of container(s) resource usage statisticsstop        Stop servicestop         Display the running processesunpause     Unpause servicesup          Create and start containersversion     Show the Docker Compose version informationwait        Block until the first service container stopswatch       Watch build context for service and rebuild/refresh containers when files are updatedRun 'docker compose COMMAND --help' for more information on a command.
[root@docker ~]# docker compose version
Docker Compose version v2.27.0

Compose 模板

模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令 跟 docker run 相关参数的含义都是类似的。

默认的模板文件名称为 docker-compose.yml ,格式为 YAML 格式。

模板文件结构

  • version:用来定义模板文件的版本,不同版本的模板,格式也不一样。
  • 资源列表:用来定义资源清单,包括service、secret、network、volume等。
  • 注释行: # 开头的注释行。

示例:使用版本3模板,定义一个使用httpd镜像的services。

version: "3"
services:webapp:image: httpd

实战-Wordpress

方法一:

用docker run

[root@docker ~]# docker pull mysql[root@docker ~]# docker pull wordpress[root@docker ~]# docker run -tid --name db --restart always -v /db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -e MYSQL_DATABASE=wordpress mysql
8da76295432326d26a11844fef60042756234194b562d10a9edc5346d78e9da2
[root@docker ~]# docker run -tid --name blog -v /web:/var/www/html -p 80:80 --link db -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123 -e WORDPRESS_DB_NAME=wordpress wordpress
fcaa6809d5c6d860db16c2fe845bf1b27979e003ce652b27d9f637a67dadf79e[root@docker ~]# docker ps

在这里插入图片描述

测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

方法二:

用docker compose

# 先删除之前的环境
[root@docker ~]# docker rm -f $(docker ps -aq)
fcaa6809d5c6
8da762954323# 通过docker compose实现多个容器一起启动
[root@docker wordpress]# vim docker-compose.yml
[root@docker wordpress]# cat docker-compose.yml
services:blog:				#服务名字,相当于docker run的时候指定的一个名称image: wordpress:latest		#必选,镜像的名字restart: alwayslinks:- dbports:		#可选,等价于 docker container run 里的 -p 选项指定端口映射- "80:80"environment:	#可选,等价于 docker run 里的 --env 选项设置环境变量- WORDPRESS_DB_HOST=db- WORDPRESS_DB_USER=root- WORDPRESS_DB_PASSWORD=123- WORDPRESS_DB_NAME=wordpressdb:image: mysql:latestrestart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=123- MYSQL_DATABASE=wordpress# 写完检查下语法
[root@docker wordpress]# docker compose config -q# 后端运行
[root@docker wordpress]# docker compose up -d
[+] Running 3/3✔ Network wordpress_default   Created                                                                                                 0.3s✔ Container wordpress-db-1    Started                                                                                                 0.5s✔ Container wordpress-blog-1  Started                        
# 查看 
[root@docker wordpress]# docker ps

在这里插入图片描述

测试

在这里插入图片描述

docker图形界面管理

DockerUI 容器管理器的安装与使用

简介:

DockerUI是一个易用且轻量化的 Docker 管理工具,通过 Web 界面的操作,更方便对于 Docker 指令不 熟悉的用户更容易操作 Docker。

功能:
  • Docker主机管理:数据卷管理,镜像管理,容器管理,构建管理,仓库配置管理,网络配置管理

  • Docker Swarm集群管理:集群概要信息,节点管理,Service管理,任务管理,密码管理,配置管 理

镜像:

使用的镜像来自于@joinsunsoft ,他发布在Docker Hub的镜像地址为:http s://hub.docker.com/r/joinsunsoft/docker.ui

安装
[root@docker ~]# docker pull joinsunsoft/docker.ui# 启动容器并映射8999端口:
[root@docker ~]# docker run -d --name docker.ui --restart always -v /var/run/docker.sock:/var/run/docker.sock -p 8999:8999 joinsunsoft/docker.ui
14357a64e8df7b96764e6aa23d4fd094056c9421eef8a642d5c322c9411a0177
测试

浏览器访问192.168.108.30:8999

默认用户名密码:ginghan/123456

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

可以管理镜像容器

在这里插入图片描述

# 拉取httpd和busybox
[root@docker ~]# docker pull httpd[root@docker ~]# docker pull busybox# 回到ui界面

在这里插入图片描述

在这里插入图片描述

[root@docker ~]# docker run -itd busybox
81080c93ff6619e4c1c16d6c66b934b5a1dda2a1ff6ed3a1d85de62650de2e49

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

Docker 图形化界面管理工具 Portainer

安装
# 创建存储卷
[root@docker ~]# docker volume create portainer_data
portainer_data
[root@docker ~]# docker volume ls
DRIVER    VOLUME NAME
local     12d86d6267f1848241d91473cbace4209d3fb5c7098a183114400b7c9924471f
local     558dac1cf2e863b38f0d6c81f1ef451eef72bfe615d5150b89601ab02f20509e
local     portainer_data# 通过docker安装Portainer
[root@docker ~]# docker pull portainer/portainer-ce:latest[root@docker ~]# docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
f11d6bd62d48d632a9596f493911c7297b19663280fe1ac0c01747d326bc7d4c
访问

浏览器 https://192.168.108.30:9443访问 Portainer,首次访问需要创建管理员账号

在这里插入图片描述

设置密码

在这里插入图片描述

访问
在这里插入图片描述

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

使用

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

在这里插入图片描述

Docker swarm

概念

集群化:从 “单主机” 到 “整体资源池”

Docker Swarm 的核心是管理 Docker Host 集群,先理解 “集群化(Clustering)” 的价值:

  • 集群定义:由网络互联的多台服务器组成,协同工作时像 “单个系统”,同时具备高可用、负载均衡、并行处理能力(这是与 “一堆独立服务器” 的核心区别)。
  • 为什么需要集群:
    • 避免资源浪费:独立服务器无法动态适配应用资源波动(如早高峰内存需求高、下午低),提前分配主机易导致利用率低;
    • 减少人工干预:独立服务器宕机时,需手动迁移受影响应用;集群可自动处理故障,保障业务弹性;
    • 简化管理思维:无需关注 “应用跑在某台主机”,只需定义 “应用需多少 CPU / 内存”,集群管理工具(如 Swarm)会自动调度资源。
  • 集群扩容 / 缩容:通过添加 / 删除主机节点实现,操作后集群仍保持 “整体” 属性,不改变使用逻辑。

Docker Swarm Mode:内置的集群能力

  • 版本里程碑:Docker v1.12 后,Swarm 功能完全集成到 Docker Engine 中,无需额外安装软件(如之前依赖的 Consul/etcd/Zookeeper 等外部数据库),启动 “Swarm Mode” 即可使用集群能力。
  • 优势:对比 Kubernetes,Swarm 集群创建更简单(无额外配置),适合作为容器编排的入门学习工具。
  • 兼容性:同一 Docker 主机可同时运行 “Swarm 服务(service)” 和 “独立容器”,不冲突。

Swarm 核心概念拆解

Swarm(集群实例)
  • 定义:由多个运行 Docker Engine 的主机组成的 “集群单元”,当某台主机初始化 Swarm 或加入现有 Swarm 时,即启动 “Swarm Mode”。
  • 能力边界:未启动 Swarm Mode 时,Docker 仅能执行单容器命令;启动后,新增 “编排 service” 的能力(如管理多副本容器、故障自愈)。
Node(节点)
  • 定义:Swarm 中的每台 Docker Engine 主机都是一个 Node,分两种角色,且一台主机仅占一种角色:

    角色核心职责关键特性
    Manager Node(管理节点)1. 接收部署命令,拆解任务并分配给 Worker; 2. 维护集群状态(如 service 期望副本数); 3. 多管理节点时自动选举 Leader(执行编排)- 生产环境需 3/5/7 个(奇数,防脑裂); - 默认同时是 Worker,可配置为 “仅管理节点”(专职集群管理)
    Worker Node(工作节点)1. 接收并执行 Manager 派发的任务; 2. 定期向 Manager 汇报自身资源(CPU / 内存)和任务状态仅负责运行容器,不参与集群管理
Service(服务)
  • 定义:对 “应用部署需求” 的抽象描述(如 “用 httpd:latest 镜像,启动 3 个副本,提供 HTTP 服务”),是 Swarm 编排的最小单元。
  • 核心逻辑:Manager 确保 Service 始终处于 “期望状态”,举例:
    1. 部署 httpd 服务(3 副本),Manager 分析节点资源后,分配 2 个副本到 Worker1、1 个到 Worker2;
    2. 若 Worker2 宕机,Manager 监控到故障,立即在 Worker3 上新建 1 个 httpd 副本,维持 “3 副本” 的期望状态(故障自愈)。

部署swarm集群

创建三节点集群

swarm-manager 是 manager node,swarm-worker1 和 swarm-worker2 是 worker node。

在这里插入图片描述

# 在 swarm-manager 上执行如下命令创建 swarm
[root@swarm-manager ~]# docker swarm init --advertise-addr 192.168.108.30
Swarm initialized: current node (t2wuubtvlwx0qngw3qi6kp6zc) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-24dky4f5899mt9hvc4i2h27xqf1ep0sd88b3i1gv7v9izx7xrb-cd03s0sgd0i1l7y3sav2k79da 192.168.108.30:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instruct                          ions.# 执行 docker node ls 查看当前 swarm 的 node,目前只有一个 manager。
[root@swarm-manager ~]# docker node ls
ID                            HOSTNAME        STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
t2wuubtvlwx0qngw3qi6kp6zc *   swarm-manager   Ready     Active         Leader           26.1.3

防火墙设置,三个节点都要执行

[root@swarm-manager ~]# firewall-cmd --set-default-zone=trusted
success
[root@swarm-worker1 ~]# firewall-cmd --set-default-zone=trusted
success
[root@swarm-worker2 ~]# firewall-cmd --set-default-zone=trusted
success

复制前面的 docker swarm join 命令,在 swarm-worker1 和 swarm-worker2 上执行,将它们添 加到 swarm 中。

[root@swarm-worker1 ~]# docker swarm join --token SWMTKN-1-24dky4f5899mt9hvc4i2h27xqf1ep0sd88b3i1gv7v9izx7xrb-cd03s0sgd0i1l7y3sav2k79da 192.168.108.30:2377
This node joined a swarm as a worker.[root@swarm-worker2 ~]# docker swarm join --token SWMTKN-1-24dky4f5899mt9hvc4i2h27xqf1ep0sd88b3i1gv7v9izx7xrb-cd03s0sgd0i1l7y3sav2k79da 192.168.108.30:2377
This node joined a swarm as a worker.# 两个 worker node 已经添加进来了
[root@swarm-manager ~]# docker node ls
ID                            HOSTNAME        STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
t2wuubtvlwx0qngw3qi6kp6zc *   swarm-manager   Ready     Active         Leader           26.1.3
m8w1ijonr4jrp006rg5o7fgft     swarm-worker1   Ready     Active                          26.1.3
qiw3ydp7o20a65rlfare0g0a8     swarm-worker2   Ready     Active                          26.1.3

可以通过 docker swarm join-token worker 再次查看docker swarm init 提示的添加 worker 的完整命令。

[root@swarm-manager ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-24dky4f5899mt9hvc4i2h27xqf1ep0sd88b3i1gv7v9izx7xrb-cd03s0sgd0i1l7y3sav2k79da 192.168.108.30:2377

运行第一个 Service

部署一个运行 httpd 镜像的 service

[root@swarm-manager ~]# docker service create --name web_server httpdxzlkc6a9md74ca23xg4khsh85
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service xzlkc6a9md74ca23xg4khsh85 converged# --name : service 命名
# httpd :镜像的名字# 查看当前 swarm 中的 service
[root@swarm-manager ~]# docker service ls
ID             NAME         MODE         REPLICAS   IMAGE          PORTS
xzlkc6a9md74   web_server   replicated   1/1        httpd:latest# 查看service 每个副本的状态
[root@swarm-manager ~]# docker service ps web_server
# 下图可以看到容器web_server在swarm-worker2上运行# 验证httpd 容器已经运行
# 去swarm-worker2上验证
[root@swarm-worker2 ~]# docker ps

在这里插入图片描述

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

如何实现 Service 伸缩

增加 service 的副本数就可以

[root@swarm-manager ~]# docker service scale web_server=5
web_server scaled to 5
overall progress: 5 out of 5 tasks
1/5: running
2/5: running
3/5: running
4/5: running
5/5: running
verify: Service web_server converged

副本数增加到 5,通过 docker service ls 和 docker service ps 查看副本的详细信息。

[root@swarm-manager ~]# docker service ls
ID             NAME         MODE         REPLICAS   IMAGE          PORTS
xzlkc6a9md74   web_server   replicated   5/5        httpd:latest
[root@swarm-manager ~]# docker service ps web_server

在这里插入图片描述

5 个副本已经分布在 swarm 的所有三个节点上。

数增加到 5,通过 docker service ls 和 docker service ps 查看副本的详细信息。

[root@swarm-manager ~]# docker service ls
ID             NAME         MODE         REPLICAS   IMAGE          PORTS
xzlkc6a9md74   web_server   replicated   5/5        httpd:latest
[root@swarm-manager ~]# docker service ps web_server

[外链图片转存中…(img-XERJfLCW-1757517387121)]

5 个副本已经分布在 swarm 的所有三个节点上。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++类和对象初识

面向过程 1.1 面向过程特点 1.2 通俗解释:煮方便面 1.3 面向过程实现代码 1.4 特点总结面向对象 2.1 面向对象特点 2.2 通俗解释:对象协作思维 2.3 面向对象实现代码 2.4 特点总结面向对象和面向过程总结C 面向对象介绍 4.1 面向对象三大基本特征封装&am…

C++ Int128 —— 128位有符号整数类实现剖析

🧠 C Int128 —— 128位有符号整数类实现剖析 引用:openppp2/ppp/Int128.h 🏗️ 1. 存储结构设计 #mermaid-svg-2JDFsdz6MTbX253D {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-sv…

【C 语言生成指定范围随机数(整数 + 小数):原理、实现与避坑指南】

概述 在 C 语言开发中,生成指定范围的随机数是高频需求(如游戏随机道具、数据模拟、测试用例生成等)。但很多新手会卡在 “范围控制”“随机数重复”“小数生成” 等问题上。本文结合实战场景,从原理到代码详细讲解如何生成 1100、…

一个简单的langgraph agent系统

本文基于langgraph的预制件 Agent Chat UI和《搭建一个本地langgraph服务》中的本地服务构建一个简单的agent系统。 说明:Agent Chat UI需要nodejs版本18及以上,而nodejs18需要的glibc版本为2.28,本人使用操作系统为ubuntu18.04,g…

通过SSH来推送本地文件夹到Github

配置SSH git使用SSH配置, 初始需要以下三个步骤 使用秘钥生成工具生成rsa秘钥和公钥 将rsa公钥添加到代码托管平台 将rsa秘钥添加到ssh-agent中,为ssh client指定使用的秘钥文件 具体操作如下: 第一步:检查本地主机是否已经存在…

视频转webp批量处理工具哪个好?这里有答案

你是不是也遇到过这样的困扰:手机里存满了精彩的短视频,想做成动图分享到社交媒体,却发现转换后的GIF文件巨大无比,画质还惨不忍睹?要怎么把手机视频转webp,才能既保持高清画质,又能大幅减小文件…

【Fastjson】Fastjson2 在不同 Modules 模块包下,@JSONField name映射无法反序列化的 BUG 及解决

问题:在使用 alibaba fastjson2 做 JSONField 字段名映射时,在同模块包下 Flink Jar 任务正常映射,本地测试正常映射,但是将两个模块包上传至 Flink Cluster 之后,出现反序列化异常,子模块无法反序列化父模…

Go语言基础---数据类型间的故事

Go语言基础—数据类型间的故事 目录 前言基本数据类型 整形字节特殊整形unsafe.Sizeof数字字面量语法浮点型布尔值字符串byte和rune类型 运算符 算术运算符关系运算符逻辑运算符位运算符赋值运算符 前言 Go语言是Google开发的一种静态强类型、编译型语言。Go语言语法与C相近…

dedecms软件等级★号改成图片图标显示的办法

我们在用到dedecms织梦的软件模型&#xff0c;在调用软件星级的时候&#xff0c;要把默认的星号改为图片&#xff0c;这个要怎么操作呢&#xff1f;1、软件模型管理里面-字段管理-字段配置softrankislink一行改为&#xff1a;<field:softrank itemname软件等级 typeint isnu…

windows下安装claude code+国产大模型glm4.5接入(无需科学上网)

下载安装node.js https://nodejs.org/en/download 安装版.msi 直接下载安装即可 免安装版.zip 1.解压下载的压缩包 2.创建数据缓存存储目录cache和全局安装工具目录global 3.配置环境变量 【我的电脑】右键选中【属性】-> 找到【高级系统设置】-> 右下角【环境变量…

嵌入式 - ARM4

裸机实现LED闪烁一、启动代码1. 异常向量表配置1. .global汇编器指令&#xff0c;全局定义标签_start&#xff0c;作为汇编程序的默认起点2. 配置标签配置标签时可以前置加_ &#xff0c;以便和普通标签或系统标签做区分3. 异常向量表ARM架构规定异常向量表位置固定&#xff0c…

《C++ 108好库》之2 多线程库thread,mutex,condition_variable,this_thread

《C 108好库》之之2 多线程库thread&#xff0c;mutex&#xff0c;condition_variable&#xff0c;this_thread《C 108好库》之2 多线程库thread&#xff0c;mutex&#xff0c;condition_variable&#xff0c;this_threadstd::thread类​​互斥量&#xff08;Mutex&#xff09;…

Android系统框架知识系列(二十):专题延伸:JVM vs ART/Dalvik - Android运行时演进深度解析

​关键词​&#xff1a;运行时优化、AOT编译、JIT编译、内存管理、电池效率、性能分析一、Android运行时演进背景1. 移动环境的特殊挑战Android运行时环境的演进源于移动设备的独特限制&#xff1a;​移动设备约束条件​&#xff1a;​有限的内存资源​&#xff1a;早期设备仅1…

ubuntu 22 安装轻量级桌面Xfce并使用xrdp远程桌面连接

1.安装Xfce:sudo apt install xubuntu-desktop -y2.安装xrdp:sudo apt install xrdp -y3.配置xrdp&#xff0c;nano /etc/xrdp/xrdp.ini:[Globals] ... port3389 ; 远程连接端口&#xff0c;默认是3389&#xff0c;可以改成自己喜欢的端口... ; ; Session types ;; Some sess…

【Flask】测试平台开发,数据看板开发-第二十一篇

概述&#xff1a;在前面我们已经实现了我们的产品创建管理&#xff0c;应用管理管理&#xff0c;需求提测管理但是每周提测了多少需求&#xff0c;创建了哪些产品&#xff0c;我们是不是看着不是很直观&#xff0c;接下来我们就需要开发一个数据看板功能&#xff0c;实现能够看…

我是程序员,不是程序猿:请别把我当猴耍——拒绝被低估,用专业赢得尊重

摘要 本文旨在深度剖析“程序员”与“程序猿”一字之差背后所反映的职业尊严与身份认同问题。我们生活在一个技术驱动的时代&#xff0c;但对技术创造者的认知却常常被“程序猿”、“码农”等标签简单化、甚至矮化。本文将从正名开始&#xff0c;辨析“程序员”的专业内涵&…

C++中vector删除操作的安全隐患与最佳实践

std::vector 是C标准模板库&#xff08;STL&#xff09;中最常用的动态数组容器&#xff0c;提供了高效的随机访问和动态扩容能力。然而&#xff0c;其删除操作如果使用不当&#xff0c;会引入严重的安全隐患&#xff0c;包括未定义行为、内存泄漏和数据竞争等问题。本文将深入…

Unix/Linux 系统中的 `writev` 系统调用

<摘要> 本文对 Unix/Linux 系统中的 writev 系统调用进行了全面深入的解析。内容涵盖了其产生的背景&#xff08;从传统 write 的局限性到分散/聚集 I/O 概念的引入&#xff09;、核心概念&#xff08;如 struct iovec、系统调用流程&#xff09;。重点剖析了其设计意图&…

深入理解 Android targetSdkVersion:从 Google Play 政策到依赖冲突

深入理解 Android targetSdkVersion&#xff1a;从 Google Play 政策到依赖冲突 作为 Android 开发者&#xff0c;你很可能在 Android Studio 中见过这条提示&#xff1a;Google Play requires that apps target API level 33 or higher。它像一个尽职的提醒者&#xff0c;时常…

灰匣(GrayBox)1.0.0 发布【提升系统权限APP】

灰匣是一个提升系统权限的工具&#xff0c;可以配合Root、三方软件&#xff08;Shizuku&#xff09;以及【设备管理员】&#xff08;设备所有者&#xff09;实现一些高级功能及底层接口&#xff0c;可以自动隔离&#xff08;冻结/禁用&#xff09;不必要的应用&#xff0c;如某…