Docker 09 容器编排

一、什么是容器编排

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

二、为什么需要容器编排?

  • 依赖管理 , 当一个容器必须在另一个容器运行完成后,才能运行时,就需要进行依赖管理
    eg: java 项目依赖mysql、redis,所以需要先运行 mysql、redis,然后再运行java。

  • 副本数控制 ,容器有时候也需要集群,那么运行集群的服务时,docker run ,自己写的话运行 10个节点就得写10遍docker run, 那么命令管理很不方便,不好控制。可以快速的对容器集群进行弹性伸缩。

  • 配置共享 , 通过配置文件统一描述需要运行的服务相关信息,自动化的解析配置内容,并构建对应的服务。

让我们可以更见的的使用容器

三、Docker Compose(单机)

学完docker compse后基本上就不用再去记原来的docker那些命令了。只需要学会docker-compose.yml的配置怎么写即可。

compose官方doc介绍文档
https://docs.docker.com/compose/
compose命令集
https://docs.docker.com/reference/cli/docker/compose/

Docker Engine官方文档(包括最新版下载)
https://docs.docker.com/engine/

3.1 compose单词释义

[kəmˈpoʊz]

  • v.组成;构成(一个整体);创作(音乐);作曲;撰写(信函、讲稿、诗歌等);使镇静;

例句

  • Leo can compose and arrange music for the school band. (利奥可以为学校乐队作曲和编曲。)

基本释义‌: 指将多个部分组合成整体,或创作音乐、文字作品,也可表示使情绪镇静。
‌常见搭配‌: compose music(作曲)、compose a letter(写信)、be composed of(由…组成)。
‌用法示例‌:

  • The committee is composed of five members.(委员会由五名成员组成)/
  • She took a moment to compose herself before the speech.(她在演讲前花了一点时间让自己镇静下来)。

3.2 版本简述

3.2.1 docker-compose-plugin 与 docker-compose 的区别

网友总结:https://devpress.csdn.net/awstech/6a9183b93bda720d4b34cdb0.html

3.2.2 安装docker-ce的docker 和docker-compose版本

  • yum install -y docker-ce 中已经安装了docker-compose-plugin,是新版本的docker compose,参见阿里云docker-ce安装: https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.5eca1b11ZIidVl

  • 老版本的docker-compose中间带横杠,在center-os中yun install -y docker-compose下载的是老版本的这个(但我们不需要这个老版本了)。

  • 截止到2026-09-21, 腾讯云服务器 centos-7.9, 通过腾通云安装的docker-ce或阿里云安装的docker Engine的版本都是26.1.4。Docker Compose version v2.27.1

3.2.3 2025-09-21 最新Docker版本介绍

  • 而百度搜索最新Docker版本给出的是:29.6.2(2026 年 7 月 16 日发布)。

3.2.3 2025-09-21 最新Docker compose 版本介绍

docker compose最新版本:5.5.1 : https://github.com/docker/compose/releases

3.2.4 Docker compose V5 版本介绍

Docker 在 2025 年底调整了版本命名策略,直接跳过了 v3 和 v4,从 v2 系列跨越到了 v5.0.0(内部代号 “Mont Blanc”),其主要目的是为了彻底区分“Compose 文件格式版本(如 v2/v3)”与“Compose CLI 工具版本”。
以下是关于 v5.0.1 的关键信息:

1. 主要变化与特性
版本跳跃:为了避免与旧的 version: ‘3’ 这种 YAML 文件格式混淆,官方决定将工具版本直接提升至 5.x。
性能提升:v5 引入了官方 Go SDK,允许开发者更方便地在其他 Go 应用中集成 Compose 功能。
构建引擎优化:内部构建逻辑进一步与 docker buildx 和 docker bake 深度集成,提供了更一致的构建体验。
更好的 UI:优化了进度条显示和终端输出体验。

2. 兼容性
文件格式:它完全兼容现有的 compose.yaml(即所谓的 Compose Specification)。你不再需要在 YAML 文件顶部写 version: ‘3.x’。
运行环境:它需要较新版本的 Docker Engine(建议 27.0 或更高版本)以获得最佳支持。

3.3 配置文件

image

服务 services

需要运行的容器配置,可以理解为原先用docker run命令后面跟的一系列配置信息,都配置在这个下面

网络 netwroks

docker compose 公共的自定义网络管理,配置好以后可以直接在services中去引用该网络配置。这个配置可以被多个service使用。

数据卷 volumes

在docker compose 下的统一数据卷管理,可以提供给多个service使用

将如下docker容器 启动命令转换成compose.yaml
docker run -d --restart=always --name nginx-demo-service --net xxx -v /www/wolfcode.cn:/usr/share/nginx/html -e APP_ENV=dev nginx

compose.yaml

version: "2.1"
services:
  nginx-demo:
    image: "nginx:latest"
    # container_name: "nginx-compose"
    restart: "always"
    networks:
      - wolfcode_net
    volumes:
      - /www/wolfcode.cn:/usr/share/nginx/html
    environment:
      APP_ENV: dev
    dns:
      - 114.114.115.115
    ports:
      - 80
    
networks:
  wolfcode_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 188.18.0.0/16
          gateway: 188.18.0.1

常用命令

构建服务

vim compose.yaml
# 保存上面的compose.yml内容

# docker compose config
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
name: compose-demo
services:
  nginx-demo:
    dns:
      - 114.114.115.115
    environment:
      APP_ENV: dev
    image: nginx:latest
    networks:
      wolfcode_net: null
    ports:
      - mode: ingress
        target: 80
        protocol: tcp
    restart: always
    volumes:
      - type: bind
        source: /www/wolfcode.cn
        target: /usr/share/nginx/html
        bind:
          create_host_path: true
networks:
  wolfcode_net:
    name: compose-demo_wolfcode_net
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.21.0.0/16
          gateway: 172.21.0.1
# 有上面这大段输出,证明配置OK,没问题

# 创建nginx-demo服务
# docker compose create nginx-demo
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
[+] Creating 2/0
 ✔ Network compose-demo_wolfcode_net  Created          0.0s
 ✔ Container nginx-compose            Created          0.0s

# 但是检查发现此时服务没有启动
# docker compose ps
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
NAME      IMAGE     COMMAND   SERVICE   CREATED   STATUS    PORTS

# 但是 -a 能看到
# docker compose ps -a
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
NAME            IMAGE          COMMAND                   SERVICE      CREATED          STATUS    PORTS
nginx-compose   nginx:latest   "/docker-entrypoint.…"   nginx-demo   23 seconds ago   Created   


# 启动服务 不带具体名字就是启动所有的service
# docker compose up -d
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
[+] Running 1/1
 ✔ Container nginx-compose  Started   0.1s

# 这回就可以查到了
# docker compose ps
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
NAME            IMAGE          COMMAND                   SERVICE      CREATED              STATUS          PORTS
nginx-compose   nginx:latest   "/docker-entrypoint.…"   nginx-demo   About a minute ago   Up 12 seconds   80/tcp

# 修改配置文件后,直接运行下面这命令即可重启
# docker compose up -d

# 启动3个节点
# docker compose scale nginx-demo=3
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
WARNING: The "nginx-demo" service is using the custom container name "nginx-compose". Docker requires each container to have a unique name. Remove the custom name to scale the service.

# 将配置文件中的container_name: "nginx-compose" 注释掉
# 再次运行扩容命令
# docker compose scale nginx-demo=3
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
[+] Running 4/4
 ✔ Container compose-demo-nginx-demo-3  Started      0.3s 
 ✔ Container nginx-compose              Recreated    0.2s 
 ✔ Container compose-demo-nginx-demo-2  Started      0.6s 
 ✔ Container compose-demo-nginx-demo-1  Started      0.2s 

# 检查运行中的容器
# docker compose ps
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
NAME                        IMAGE          COMMAND                   SERVICE      CREATED          STATUS          PORTS
compose-demo-nginx-demo-1   nginx:latest   "/docker-entrypoint.…"   nginx-demo   16 seconds ago   Up 15 seconds   0.0.0.0:32769->80/tcp, :::32769->80/tcp
compose-demo-nginx-demo-2   nginx:latest   "/docker-entrypoint.…"   nginx-demo   16 seconds ago   Up 14 seconds   0.0.0.0:32770->80/tcp, :::32770->80/tcp
compose-demo-nginx-demo-3   nginx:latest   "/docker-entrypoint.…"   nginx-demo   16 seconds ago   Up 15 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp

#扩容到5个节点
# docker compose scale nginx-demo=5
# 缩容到3个节点
# docker compose scale nginx-demo=3
#缩容到1个节点
# docker compose scale nginx-demo=1


[root@VM-0-16-centos compose-demo]# docker compose scale nginx-demo=5
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
[+] Running 5/5
 ✔ Container compose-demo-nginx-demo-1  Running                                                                                                                                                  0.0s 
 ✔ Container compose-demo-nginx-demo-2  Running                                                                                                                                                  0.0s 
 ✔ Container compose-demo-nginx-demo-3  Running                                                                                                                                                  0.0s 
 ✔ Container compose-demo-nginx-demo-5  Started                                                                                                                                                  0.3s 
 ✔ Container compose-demo-nginx-demo-4  Started                                                                                                                                                  0.2s 
[root@VM-0-16-centos compose-demo]# docker compose ps
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
NAME                        IMAGE          COMMAND                   SERVICE      CREATED          STATUS          PORTS
compose-demo-nginx-demo-1   nginx:latest   "/docker-entrypoint.…"   nginx-demo   15 minutes ago   Up 15 minutes   0.0.0.0:32769->80/tcp, :::32769->80/tcp
compose-demo-nginx-demo-2   nginx:latest   "/docker-entrypoint.…"   nginx-demo   15 minutes ago   Up 15 minutes   0.0.0.0:32770->80/tcp, :::32770->80/tcp
compose-demo-nginx-demo-3   nginx:latest   "/docker-entrypoint.…"   nginx-demo   15 minutes ago   Up 15 minutes   0.0.0.0:32768->80/tcp, :::32768->80/tcp
compose-demo-nginx-demo-4   nginx:latest   "/docker-entrypoint.…"   nginx-demo   16 seconds ago   Up 15 seconds   0.0.0.0:32771->80/tcp, :::32771->80/tcp
compose-demo-nginx-demo-5   nginx:latest   "/docker-entrypoint.…"   nginx-demo   16 seconds ago   Up 15 seconds   0.0.0.0:32772->80/tcp, :::32772->80/tcp
[root@VM-0-16-centos compose-demo]# 
[root@VM-0-16-centos compose-demo]# 
[root@VM-0-16-centos compose-demo]# docker compose scale nginx-demo=3
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
[+] Running 5/5
 ✔ Container compose-demo-nginx-demo-1  Running                                                                                                                                                  0.0s 
 ✔ Container compose-demo-nginx-demo-2  Running                                                                                                                                                  0.0s 
 ✔ Container compose-demo-nginx-demo-3  Running                                                                                                                                                  0.0s 
 ✔ Container compose-demo-nginx-demo-5  Removed                                                                                                                                                  0.2s 
 ✔ Container compose-demo-nginx-demo-4  Removed                                                                                                                                                  0.2s 
[root@VM-0-16-centos compose-demo]# docker compose ps
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
NAME                        IMAGE          COMMAND                   SERVICE      CREATED          STATUS          PORTS
compose-demo-nginx-demo-1   nginx:latest   "/docker-entrypoint.…"   nginx-demo   15 minutes ago   Up 15 minutes   0.0.0.0:32769->80/tcp, :::32769->80/tcp
compose-demo-nginx-demo-2   nginx:latest   "/docker-entrypoint.…"   nginx-demo   15 minutes ago   Up 15 minutes   0.0.0.0:32770->80/tcp, :::32770->80/tcp
compose-demo-nginx-demo-3   nginx:latest   "/docker-entrypoint.…"   nginx-demo   15 minutes ago   Up 15 minutes   0.0.0.0:32768->80/tcp, :::32768->80/tcp
[root@VM-0-16-centos compose-demo]# 
[root@VM-0-16-centos compose-demo]# 
[root@VM-0-16-centos compose-demo]# docker compose scale nginx-demo=1
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
[+] Running 3/3
 ✔ Container compose-demo-nginx-demo-1  Running                                                                                                                                                  0.0s 
 ✔ Container compose-demo-nginx-demo-3  Removed                                                                                                                                                  0.2s 
 ✔ Container compose-demo-nginx-demo-2  Removed                                                                                                                                                  0.2s 
[root@VM-0-16-centos compose-demo]# docker compose ps
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
NAME                        IMAGE          COMMAND                   SERVICE      CREATED          STATUS          PORTS
compose-demo-nginx-demo-1   nginx:latest   "/docker-entrypoint.…"   nginx-demo   15 minutes ago   Up 15 minutes   0.0.0.0:32769->80/tcp, :::32769->80/tcp


创建服务

拉取镜像

容器的运行/启动/停止

查看管理的容器列表

查看日志

docker compose logs 查询所有服务的日志
docker compose logs -f nginx-demo 只看nginx-demo服务的log


四、Swarm ([swɔːm]集群)

单词释义

  • n.一大群(蜜蜂等昆虫);一大批(向同方向移动的人);
  • vi.成群地来回移动;成群地飞来飞去;

‌实用例句‌:

  1. A swarm of bees flew out of the hive.(一大群蜜蜂从蜂巢飞了出来。)。
  2. A swarm of people encircled the hotel.(一大群人包围了这家酒店。)。
  3. Tourists swarm the little beachside town during the summer.(夏季游客纷纷涌向这个海滨小镇。)。
  4. The capital city is now swarming with police.(首都现在到处是警察。)。

官方文档

https://docs.docker.com/engine/swarm/

swarm 概述

集群的管理和编排是使用嵌入docker 引擎的SwacmKit, 可以在docker初始化时启动swarm模式或者加入已存在的swarm

swarm集群节点的管理命令:

docker swarm --help

  • 初始化集群节点
  • 加入节点
  • 退出节点

Node

  1. 运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点(Node)。

  2. 节点分为管理(Manager)节点和工作(Worker)节点。

  3. 管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行(节点退出集群命令docker swarm leave可以在工作节点执行)。一个Swarm集群可以有多个管理节点,但只有一个管理节点可以成为领导者,领导者通过Raft协议实现。通常,第一个启用Docker Swarm的节点将成为领导者,后来加入的都是跟随者。当前的领导者如果挂掉,剩余的节点将重新选举出一个新的leader。每一个manager都有一个完整的当前集群状态的副本,可以保证manager的高可用。

  4. 工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。worker节点之间,通过control plane进行通信,这种通信使用gossip协议,并且是异步的。
    来自Docker官网的这张图片形象的展示了集群中管理节点与工作节点的关系。
    image
    image

Task

任务(Task)是Swarm中的最小调度单位,目前来说就是一个单一的容器。

Service

服务 (Services)是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

replicated services: 按照一定规则在各个工作节点上运行指定个数的任务。
global services: 每个工作节点上运行一个任务

两种模式通过docker service create 的--mode参数指定。

image

image

初始化集群

登录管理节点,并执行如下命令
docker swarm init --advertise-addr.192.168.113.120
使用 docker info可以查看 swarm集群状态
docker node ls可以查看集群节点信息

查看集群

进入主节点,输入命令: dockernodes

[root@VM-0-16-centos ~]# docker swarm 

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.
[root@VM-0-16-centos ~]# docker swarm init --help

Usage:  docker swarm init [OPTIONS]

Initialize a swarm

Options:
      --advertise-addr string                  Advertised address (format: "<ip|interface>[:port]")
      --autolock                               Enable manager autolocking (requiring an unlock key to start a stopped manager)
      --availability string                    Availability of the node ("active", "pause", "drain") (default "active")
      --cert-expiry duration                   Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)
      --data-path-addr string                  Address or interface to use for data path traffic (format: "<ip|interface>")
      --data-path-port uint32                  Port number to use for data path traffic (1024 - 49151). If no value is set or is set to 0, the default port (4789) is used.
      --default-addr-pool ipNetSlice           default address pool in CIDR format (default [])
      --default-addr-pool-mask-length uint32   default address pool subnet mask length (default 24)
      --dispatcher-heartbeat duration          Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)
      --external-ca external-ca                Specifications of one or more certificate signing endpoints
      --force-new-cluster                      Force create a new cluster from current state
      --listen-addr node-addr                  Listen address (format: "<ip|interface>[:port]") (default 0.0.0.0:2377)
      --max-snapshots uint                     Number of additional Raft snapshots to retain
      --snapshot-interval uint                 Number of log entries between Raft snapshots (default 10000)
      --task-history-limit int                 Task history retention limit (default 5)
[root@VM-0-16-centos ~]# docker swarm init --advertise-addr 172.21.0.16
Swarm initialized: current node (q1g9l0olsahysfioopn48s89d) is now a manager.

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

    docker swarm join --token SWMTKN-1-4o8h033w8o3zfx751gault30y903pqk6f4118m5nkng3lmupi4-62kxpn21wt36scemyw2ls8a29 172.21.0.16:2377

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

登录另一台服务器

# ping 一下swarm manager节点是否能通
ping 172.21.0.16
#执行上面的加入swarm集群命令
docker swarm join --token SWMTKN-1-4o8h033w8o3zfx751gault30y903pqk6f4118m5nkng3lmupi4-62kxpn21wt36scemyw2ls8a29 172.21.0.16:2377
This node joined a swarm as a worker.

# 如果添加不成功,可能是Manager主机的防火墙拦截了,检查防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
# 禁用防火墙
systemctl diaable firewalld

# manager主机查看docker 集群节点
[root@VM-0-16-centos ~]# docker node ls
ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
9cgom19ugv8ctzcfkumsttch7     VM-0-9-centos    Ready     Active                          26.1.4
q1g9l0olsahysfioopn48s89d *   VM-0-16-centos   Ready     Active         Leader           26.1.4

删除之前的compose 启动的服务

[root@VM-0-16-centos ~]# docker compose ls
NAME                STATUS              CONFIG FILES
compose-demo        running(1)          /opt/docker/compose-demo/compose.yaml
harbor              running(9)          /opt/docker/harbor/docker-compose.yml
[root@VM-0-16-centos ~]# docker compose stop nginx-demo
no configuration file provided: not found
[root@VM-0-16-centos ~]# cd /opt/docker/compose-demo/
[root@VM-0-16-centos compose-demo]# ll
总用量 4
-rw-r--r-- 1 root root 465 9月  21 15:33 compose.yaml
[root@VM-0-16-centos compose-demo]# docker compose stop nginx-demo
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
[+] Stopping 1/1
 ✔ Container compose-demo-nginx-demo-1  Stopped  0.1s 
[root@VM-0-16-centos compose-demo]# docker compose rm nginx-demo
WARN[0000] /opt/docker/compose-demo/compose.yaml: `version` is obsolete 
? Going to remove compose-demo-nginx-demo-1 Yes
[+] Removing 1/0
 ✔ Container compose-demo-nginx-demo-1  Removed  0.0s 
[root@VM-0-16-centos compose-demo]# 

部署服务

查看服务操作命令:

docker service --help

新建服务

docker service create --replicas 2 -p 80:80 --name nginx_swarm nginx

docker service ls

ID             NAME          MODE         REPLICAS   IMAGE          PORTS
svq79iueq2ss   nginx_swarm   replicated   2/2        nginx:latest   *:8765->80/tcp

docker ps

CONTAINER ID   IMAGE                                 COMMAND                   CREATED              STATUS                  PORTS                                                                                                      NAMES
5640e808b850   nginx:latest                          "/docker-entrypoint.…"   About a minute ago   Up About a minute       80/tcp                                                                                                     nginx_swarm.1.0kkfz9rrxg0j3cjeglf0yo96t
04f4e032e4a4   nginx:latest                          "/docker-entrypoint.…"   2 minutes ago        Up 2 minutes            80/tcp                                                                                                     nginx_swarm.2.q5mq1fj846ceyfz9c18exnrjt

2个replicate都在manager node里了,去 join来的docker主机去docker ps ,没有服务

会查看到一个服务

健康集群状态

查看服务信息:
docker service inspect --pretty <service id | container_name>

--pretty参数可以简化输出内容
docker service ps可以查看运行中的服务信息
进入工作节点通过docker ps可以查看容器运行状态

弹性伸缩

调整实例个数

更新服务的实例个数
docker service update --replicas <num> <service id/name>

调整集群大小

添加新的Docker 节点,执行docker swarm join命令可以加入集群
执行docker swarm leave 可以退出集群,也可以带上--force参数强制退出集群

# 管理节点执行查看所有node节点
[root@VM-0-16-centos compose-demo]# docker node ls
ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
9cgom19ugv8ctzcfkumsttch7     VM-0-9-centos    Ready     Active                          26.1.4
q1g9l0olsahysfioopn48s89d *   VM-0-16-centos   Ready     Active         Leader           26.1.4

# 子节点退出
[root@VM-0-9-centos ~]# docker swarm leave
Node left the swarm.
# 此时查询服务依然存在,不会因为leave而停掉呢
[root@VM-0-9-centos ~]# docker ps


# 主节点查看node, 节点还在,状态变成了Down
[root@VM-0-16-centos compose-demo]# docker node ls
ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
9cgom19ugv8ctzcfkumsttch7     VM-0-9-centos    Down      Active                          26.1.4
q1g9l0olsahysfioopn48s89d *   VM-0-16-centos   Ready     Active         Leader           26.1.4

[root@VM-0-16-centos compose-demo]# docker node --help

docker node rm ID

五、portainer(以管理界面的方式操作docker)

docker search portainer搜索 portainer,选择自己需要的版本进

基于docker运行

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

基于swarm运行

docker service create -p 9000:9000 --replicas 1 --mounttype=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --mount type=volume,src=portainer_data,dst=/data

posted @ 2026-09-21 09:15  超轶绝尘  阅读(7)  评论(0)    收藏  举报