> 技术文档 > Docker Compose Restart 命令:服务重启的完整指南

Docker Compose Restart 命令:服务重启的完整指南


Docker Compose Restart 命令:服务重启的完整指南

    • 一、命令概述与核心价值
      • 1.1 基本语法结构
      • 1.2 与相关命令的关系对比
    • 二、命令原理深度解析
      • 2.1 操作流程解析
      • 2.2 关键特性说明
    • 三、典型应用场景实战
      • 3.1 服务故障恢复
      • 3.2 滚动重启策略
    • 四、高级使用技巧
      • 4.1 结合健康检查
      • 4.2 定时维护任务
    • 五、常见问题解决方案
      • 5.1 重启卡住问题
      • 5.2 配置不生效问题
    • 六、最佳实践指南
      • 6.1 生产环境操作清单
      • 6.2 开发环境优化建议
    • 七、总结与延伸

🌺The Begin🌺点点关注,收藏不迷路🌺

一、命令概述与核心价值

docker compose restart 是 Docker Compose 工具链中用于服务重启的关键命令,它实现了\"先停止后启动\"的原子操作,是服务维护和故障恢复的常用工具。

1.1 基本语法结构

docker compose restart [OPTIONS] [SERVICE...]

1.2 与相关命令的关系对比

#mermaid-svg-k04O4XDTkwVMrhrj {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-k04O4XDTkwVMrhrj .error-icon{fill:#552222;}#mermaid-svg-k04O4XDTkwVMrhrj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-k04O4XDTkwVMrhrj .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-k04O4XDTkwVMrhrj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-k04O4XDTkwVMrhrj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-k04O4XDTkwVMrhrj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-k04O4XDTkwVMrhrj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-k04O4XDTkwVMrhrj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-k04O4XDTkwVMrhrj .marker.cross{stroke:#333333;}#mermaid-svg-k04O4XDTkwVMrhrj svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-k04O4XDTkwVMrhrj .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-k04O4XDTkwVMrhrj .cluster-label text{fill:#333;}#mermaid-svg-k04O4XDTkwVMrhrj .cluster-label span{color:#333;}#mermaid-svg-k04O4XDTkwVMrhrj .label text,#mermaid-svg-k04O4XDTkwVMrhrj span{fill:#333;color:#333;}#mermaid-svg-k04O4XDTkwVMrhrj .node rect,#mermaid-svg-k04O4XDTkwVMrhrj .node circle,#mermaid-svg-k04O4XDTkwVMrhrj .node ellipse,#mermaid-svg-k04O4XDTkwVMrhrj .node polygon,#mermaid-svg-k04O4XDTkwVMrhrj .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-k04O4XDTkwVMrhrj .node .label{text-align:center;}#mermaid-svg-k04O4XDTkwVMrhrj .node.clickable{cursor:pointer;}#mermaid-svg-k04O4XDTkwVMrhrj .arrowheadPath{fill:#333333;}#mermaid-svg-k04O4XDTkwVMrhrj .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-k04O4XDTkwVMrhrj .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-k04O4XDTkwVMrhrj .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-k04O4XDTkwVMrhrj .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-k04O4XDTkwVMrhrj .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-k04O4XDTkwVMrhrj .cluster text{fill:#333;}#mermaid-svg-k04O4XDTkwVMrhrj .cluster span{color:#333;}#mermaid-svg-k04O4XDTkwVMrhrj div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-k04O4XDTkwVMrhrj :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}重启命令restartupstart完整重启周期可能重建容器仅启动已停止容器

二、命令原理深度解析

2.1 操作流程解析

重启过程时序图:

#mermaid-svg-xTPygc52IdU1dBYQ {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xTPygc52IdU1dBYQ .error-icon{fill:#552222;}#mermaid-svg-xTPygc52IdU1dBYQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xTPygc52IdU1dBYQ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-xTPygc52IdU1dBYQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xTPygc52IdU1dBYQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xTPygc52IdU1dBYQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xTPygc52IdU1dBYQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xTPygc52IdU1dBYQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xTPygc52IdU1dBYQ .marker.cross{stroke:#333333;}#mermaid-svg-xTPygc52IdU1dBYQ svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xTPygc52IdU1dBYQ .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-xTPygc52IdU1dBYQ text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-xTPygc52IdU1dBYQ .actor-line{stroke:grey;}#mermaid-svg-xTPygc52IdU1dBYQ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-xTPygc52IdU1dBYQ .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-xTPygc52IdU1dBYQ #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-xTPygc52IdU1dBYQ .sequenceNumber{fill:white;}#mermaid-svg-xTPygc52IdU1dBYQ #sequencenumber{fill:#333;}#mermaid-svg-xTPygc52IdU1dBYQ #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-xTPygc52IdU1dBYQ .messageText{fill:#333;stroke:#333;}#mermaid-svg-xTPygc52IdU1dBYQ .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-xTPygc52IdU1dBYQ .labelText,#mermaid-svg-xTPygc52IdU1dBYQ .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-xTPygc52IdU1dBYQ .loopText,#mermaid-svg-xTPygc52IdU1dBYQ .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-xTPygc52IdU1dBYQ .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-xTPygc52IdU1dBYQ .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-xTPygc52IdU1dBYQ .noteText,#mermaid-svg-xTPygc52IdU1dBYQ .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-xTPygc52IdU1dBYQ .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-xTPygc52IdU1dBYQ .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-xTPygc52IdU1dBYQ .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-xTPygc52IdU1dBYQ .actorPopupMenu{position:absolute;}#mermaid-svg-xTPygc52IdU1dBYQ .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-xTPygc52IdU1dBYQ .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-xTPygc52IdU1dBYQ .actor-man circle,#mermaid-svg-xTPygc52IdU1dBYQ line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-xTPygc52IdU1dBYQ :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}UserDockerContainerrestart 命令发送SIGTERM停止确认发送启动指令启动确认操作完成UserDockerContainer

2.2 关键特性说明

特性 说明 原子性操作 确保服务先完全停止再启动 配置保持 使用原有容器配置,不应用compose文件的变更 状态保留 容器文件系统内容保持不变 快速恢复 相比up命令节省了镜像检查和网络创建时间

三、典型应用场景实战

3.1 服务故障恢复

# 查看异常服务docker compose ps --filter \"status=restarting\"# 执行重启docker compose restart problematic-service

故障恢复流程图:

#mermaid-svg-v08qNM48Ypr07yKd {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-v08qNM48Ypr07yKd .error-icon{fill:#552222;}#mermaid-svg-v08qNM48Ypr07yKd .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-v08qNM48Ypr07yKd .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-v08qNM48Ypr07yKd .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-v08qNM48Ypr07yKd .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-v08qNM48Ypr07yKd .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-v08qNM48Ypr07yKd .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-v08qNM48Ypr07yKd .marker{fill:#333333;stroke:#333333;}#mermaid-svg-v08qNM48Ypr07yKd .marker.cross{stroke:#333333;}#mermaid-svg-v08qNM48Ypr07yKd svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-v08qNM48Ypr07yKd .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-v08qNM48Ypr07yKd .cluster-label text{fill:#333;}#mermaid-svg-v08qNM48Ypr07yKd .cluster-label span{color:#333;}#mermaid-svg-v08qNM48Ypr07yKd .label text,#mermaid-svg-v08qNM48Ypr07yKd span{fill:#333;color:#333;}#mermaid-svg-v08qNM48Ypr07yKd .node rect,#mermaid-svg-v08qNM48Ypr07yKd .node circle,#mermaid-svg-v08qNM48Ypr07yKd .node ellipse,#mermaid-svg-v08qNM48Ypr07yKd .node polygon,#mermaid-svg-v08qNM48Ypr07yKd .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-v08qNM48Ypr07yKd .node .label{text-align:center;}#mermaid-svg-v08qNM48Ypr07yKd .node.clickable{cursor:pointer;}#mermaid-svg-v08qNM48Ypr07yKd .arrowheadPath{fill:#333333;}#mermaid-svg-v08qNM48Ypr07yKd .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-v08qNM48Ypr07yKd .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-v08qNM48Ypr07yKd .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-v08qNM48Ypr07yKd .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-v08qNM48Ypr07yKd .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-v08qNM48Ypr07yKd .cluster text{fill:#333;}#mermaid-svg-v08qNM48Ypr07yKd .cluster span{color:#333;}#mermaid-svg-v08qNM48Ypr07yKd div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-v08qNM48Ypr07yKd :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}发现故障日志分析是否需要配置变更执行restart执行up --force-recreate验证恢复

3.2 滚动重启策略

# 分批次重启微服务docker compose restart service1 && \\sleep 10 && \\docker compose restart service2

服务依赖关系图:

#mermaid-svg-bmqzuIUu1W5Uk3PS {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .error-icon{fill:#552222;}#mermaid-svg-bmqzuIUu1W5Uk3PS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bmqzuIUu1W5Uk3PS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .marker.cross{stroke:#333333;}#mermaid-svg-bmqzuIUu1W5Uk3PS svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bmqzuIUu1W5Uk3PS .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .cluster-label text{fill:#333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .cluster-label span{color:#333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .label text,#mermaid-svg-bmqzuIUu1W5Uk3PS span{fill:#333;color:#333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .node rect,#mermaid-svg-bmqzuIUu1W5Uk3PS .node circle,#mermaid-svg-bmqzuIUu1W5Uk3PS .node ellipse,#mermaid-svg-bmqzuIUu1W5Uk3PS .node polygon,#mermaid-svg-bmqzuIUu1W5Uk3PS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bmqzuIUu1W5Uk3PS .node .label{text-align:center;}#mermaid-svg-bmqzuIUu1W5Uk3PS .node.clickable{cursor:pointer;}#mermaid-svg-bmqzuIUu1W5Uk3PS .arrowheadPath{fill:#333333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bmqzuIUu1W5Uk3PS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-bmqzuIUu1W5Uk3PS .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-bmqzuIUu1W5Uk3PS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bmqzuIUu1W5Uk3PS .cluster text{fill:#333;}#mermaid-svg-bmqzuIUu1W5Uk3PS .cluster span{color:#333;}#mermaid-svg-bmqzuIUu1W5Uk3PS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bmqzuIUu1W5Uk3PS :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}网关服务1服务2数据库

四、高级使用技巧

4.1 结合健康检查

# docker-compose.yml 片段services: web: healthcheck: test: [\"CMD\", \"curl\", \"-f\", \"http://localhost/health\"] interval: 30s timeout: 10s retries: 3

重启后验证:

watch -n 1 \'docker compose ps --format \"table {{.Name}}\\t{{.Status}}\"\'

4.2 定时维护任务

# 每天凌晨低峰期重启0 3 * * * /usr/local/bin/docker compose -f /app/docker-compose.yml restart >> /var/log/container_restart.log

系统资源监控图:

Docker Compose Restart 命令:服务重启的完整指南

五、常见问题解决方案

5.1 重启卡住问题

诊断流程:

#mermaid-svg-rYUv2YZYARwuEu0S {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rYUv2YZYARwuEu0S .error-icon{fill:#552222;}#mermaid-svg-rYUv2YZYARwuEu0S .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rYUv2YZYARwuEu0S .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-rYUv2YZYARwuEu0S .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rYUv2YZYARwuEu0S .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rYUv2YZYARwuEu0S .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rYUv2YZYARwuEu0S .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rYUv2YZYARwuEu0S .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rYUv2YZYARwuEu0S .marker.cross{stroke:#333333;}#mermaid-svg-rYUv2YZYARwuEu0S svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rYUv2YZYARwuEu0S .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rYUv2YZYARwuEu0S .cluster-label text{fill:#333;}#mermaid-svg-rYUv2YZYARwuEu0S .cluster-label span{color:#333;}#mermaid-svg-rYUv2YZYARwuEu0S .label text,#mermaid-svg-rYUv2YZYARwuEu0S span{fill:#333;color:#333;}#mermaid-svg-rYUv2YZYARwuEu0S .node rect,#mermaid-svg-rYUv2YZYARwuEu0S .node circle,#mermaid-svg-rYUv2YZYARwuEu0S .node ellipse,#mermaid-svg-rYUv2YZYARwuEu0S .node polygon,#mermaid-svg-rYUv2YZYARwuEu0S .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rYUv2YZYARwuEu0S .node .label{text-align:center;}#mermaid-svg-rYUv2YZYARwuEu0S .node.clickable{cursor:pointer;}#mermaid-svg-rYUv2YZYARwuEu0S .arrowheadPath{fill:#333333;}#mermaid-svg-rYUv2YZYARwuEu0S .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rYUv2YZYARwuEu0S .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rYUv2YZYARwuEu0S .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-rYUv2YZYARwuEu0S .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-rYUv2YZYARwuEu0S .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rYUv2YZYARwuEu0S .cluster text{fill:#333;}#mermaid-svg-rYUv2YZYARwuEu0S .cluster span{color:#333;}#mermaid-svg-rYUv2YZYARwuEu0S div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rYUv2YZYARwuEu0S :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}ExitedRestarting重启卡住检查进程docker compose ps状态查看日志检查资源分析退出原因调整资源限制

5.2 配置不生效问题

解决方案:

# 强制重建容器使配置生效docker compose up --force-recreate service

配置更新对比表:

操作 配置更新 容器重建 适用场景 restart ❌ ❌ 简单重启 up --force ✅ ✅ 配置变更后

六、最佳实践指南

6.1 生产环境操作清单

  1. 变更窗口管理
    # 在维护时段执行docker compose restart --timeout 30 service
  2. 服务预热
    # 重启后执行健康检查until docker compose exec service curl -f http://localhost/health; do sleep 1done
  3. 回滚准备
    # 记录当前容器IDdocker compose ps -q > container_ids_before_restart.log

6.2 开发环境优化建议

  • 使用 docker compose restart --no-deps 忽略依赖服务
  • 结合 docker compose logs -f 实时观察重启日志
  • 配置开发专用重启策略:
    deploy: restart_policy: condition: on-failure max_attempts: 3

七、总结与延伸

docker compose restart 作为服务维护的核心命令,主要应用于:

  1. 故障恢复:快速重启异常服务
  2. 定期维护:释放资源/清理状态
  3. 配置测试:验证服务健壮性

进阶方向:

  • 集成蓝绿部署策略
  • 实现金丝雀发布模式
  • 开发智能重启控制器
  • 结合服务网格实现流量控制

通过掌握这些技巧,可以构建从开发到生产的全链路服务管理能力,实现高效稳定的容器化运维。

在这里插入图片描述

🌺The End🌺点点关注,收藏不迷路🌺