返回顶部
d

docker-container-rerunDocker容器重跑

Safely check whether a Docker container's image has changed and, only when needed, recreate that docker run container with a user-provided original docker run command. Use when updating an existing Docker container managed by docker run, especially when the user provides a fixed recreate_command and wants image Id (sha256) comparison before pull/recreate. Do not use for docker compose, automatic command reconstruction, volume pruning, or speculative container changes.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
103
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

docker-container-rerun

Docker 容器重新运行

使用保守的工作流程更新 docker run 容器。

必需输入

需要用户提供以下两项内容:

  • - containername(容器名称)
  • recreatecommand(重建命令)

将 recreate_command 视为唯一可信来源。不要尝试从 docker inspect 中重建缺失的标志参数。

适用范围

仅支持最初由 docker run 管理的容器。

请勿将此技能用于:

  • - docker compose
  • 猜测或合成缺失的运行标志
  • 删除卷
  • docker system prune
  • 更改环境变量、挂载、端口、标签或网络,除非用户明确更改了重建命令

更新规则

始终比较镜像 Id 值,而非仓库摘要。

使用以下精确逻辑:

  1. 1. 从运行中的容器读取当前镜像 Id:
bash docker inspect -f {{.Image}} <容器名称>
  1. 2. 从 recreate_command 中提取镜像引用。
  2. 拉取该镜像的最新版本:
bash docker pull <镜像>
  1. 4. 读取最新的本地镜像 Id:
bash docker image inspect <镜像> --format {{.Id}}
  1. 5. 仅当两个 Id 值不同时才重新创建容器。

安全规则

在执行任何破坏性操作之前,重新说明将要使用的精确重建命令。

如果 recreate_command 缺失、不明确或明显不是 docker run 命令,则停止操作并要求用户提供有效的完整命令。

如果无法从 recreate_command 中提取镜像,则停止操作并要求用户在命令中明确提供镜像。

切勿静默修改重建命令。

需要更新时优先采用以下顺序:

bash
docker stop <容器名称>
docker rm <容器名称>

验证 recreate_command

在使用之前,验证以下所有内容:

  • - 以 docker run 开头
  • 在任何容器命令之前包含一个作为最终镜像参数的镜像名称
  • 明确针对用户想要更新的同一逻辑容器

如果命令在镜像后包含内联容器命令,则精确保留它。

如果命令是多行的,则精确保留它。

推荐执行工作流程

  1. 1. 确认目标容器名称。
  2. 回显精确的重建命令。
  3. 从重建命令中提取镜像。
  4. 比较当前镜像 Id 和最新拉取的镜像 Id。
  5. 如果 Id 匹配,报告容器已是最新状态,不执行任何其他操作。
  6. 如果 Id 不同:
- 运行 docker stop <容器名称> - 运行 docker rm <容器名称> - 运行精确的 recreate_command
  1. 7. 使用以下命令验证启动:
bash docker ps --filter name=<容器名称> docker inspect <容器名称> docker logs --tail 100 <容器名称>
  1. 8. 清晰报告状态,包括健康检查是 healthy、starting 还是不存在。

捆绑脚本

当您想要确定性检查/应用流程时,使用捆绑脚本:

bash
python3 scripts/updatedockerrun_container.py \
--container-name <容器名称> \
--recreate-command <完整的 docker run 命令>

仅当用户已批准精确的重建命令且应实际执行重建时,添加 --apply。

该脚本将:

  • - 验证 recreate_command
  • 提取镜像
  • 拉取最新镜像
  • 比较当前镜像 Id 与最新镜像 Id
  • 可选地停止/删除/重建
  • 输出包含容器状态、健康状态和最近日志的 JSON 摘要

输出预期

报告结果时,包括:

  • - 目标容器名称
  • 提取的镜像名称
  • 当前镜像 Id
  • 最新镜像 Id
  • 是否需要重建
  • 重建后的容器状态
  • 健康状态(如果存在)
  • 最近日志中看到的任何明显日志错误

示例模式

输入:

  • - containername:my-container
  • recreatecommand:
bash docker run -d --network host --name my-container --restart unless-stopped -v exampledata:/data -v examplecerts:/etc/ssl/certs -e DBHOST=<数据库主机> -e DBPORT=<数据库端口> -e DBNAME=<数据库名称> -e DBUSER=<数据库用户> -e DB_PASSWORD=<数据库密码> --health-cmd=/bin/check-health --health-interval=600s --health-retries=5 --health-timeout=3s example/image:latest

预期行为:

  • - 提取镜像 example/image:latest
  • 比较当前容器镜像 Id 与拉取的最新镜像 Id
  • 仅当 Id 不同时才重建
  • 精确保留重建命令

注意事项

当用户要求更新容器 X时,优先要求提供原始的 docker run 命令,除非该命令已记录在内存中或已在当前请求中提供。

如果用户对特定容器有已知的固定重建命令,优先使用该命令而不做任何更改。

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 docker-container-rerun-1776019546 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 docker-container-rerun-1776019546 技能

通过命令行安装

skillhub install docker-container-rerun-1776019546

下载

⬇ 下载 docker-container-rerun v1.0.0(免费)

文件大小: 5.55 KB | 发布时间: 2026-4-13 10:04

v1.0.0 最新 2026-4-13 10:04
Initial release: safely compare docker image Ids and recreate docker run containers only when needed.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部