关于 docker-destructive-guardrails
面向 Agent 的 Docker 命令安全技能,说明破坏性操作的影响,并按风险情境规定确认要求。
主要功能
- 01说明破坏性 Docker 命令的影响
- 02按操作与情境设定确认规则
- 03按风险等级区分容器清理
- 04索引 Compose 与 sandbox 相关指南
适用场景
- 01处理重置或清理 Docker 资源的请求
- 02判断 Docker 命令是否可能删除数据
- 03查找跨产品清理操作的相关防护规则
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ docker/ skills --skill docker-destructive-guardrails安装后在 Claude Code 中输入/docker-destructive-guardrails确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill.yamlagents/openai.yamlchecks/verification.mdreferences/cross-skill-destructive-command-index.mddocker-cli-destructive-commands.md详细介绍
Docker 破坏性命令防护准则
概述
此技能为处理具有破坏性或不可逆的 Docker CLI 操作提供跨产品策略:这类命令会删除数据、移除资源,或以其他方式造成无法撤销的后果。只要任务可能导致运行此类命令,就应使用此技能,即使用户从未直接提及该命令。此技能涵盖没有专属更具体技能的通用 Docker CLI 命令,并列出其他破坏性命令(Compose、sandbox、Desktop)的文档位置。
何时使用此技能
在以下情况启用此技能:
- 用户要求“清理”“清除缓存”“重新开始”“全部清空”“彻底删除”“重置”“强制移除”或“拆除” Docker 资源,却没有指定具体命令
- Agent 正考虑将
docker rm、docker rm -f、docker container prune、docker kill、docker stop、docker system prune、docker rmi、docker image rm、docker image prune -a、docker network rm、docker network prune、docker builder prune、docker buildx rm、docker context rm或独立(非 Compose)docker volume rm/docker volume prune作为解决无关问题(磁盘空间不足、容器卡住、网络过时、构建缓存损坏、构建器或卷过旧)的方法 - 用户想要了解 Docker 各项技能中破坏性命令的跨产品概览
何时不使用此技能
在以下情况不要使用此技能:
- 涉及的破坏性命令专用于 Compose(
docker compose down -v、docker compose rm -v、Compose 项目中的docker volume rm/docker volume prune)——请直接使用docker-compose-patterns,该技能完整涵盖相关指南 - 任务是编写或审查 Dockerfile 或
compose.yaml,且不涉及清理或删除 - 操作不属于 Docker(git、文件系统、云资源)——此技能仅涵盖 Docker CLI 操作
核心指南
以下每条命令都遵循同一核心规则:准确说明将删除、停止或丢失的内容,并在运行命令前征得用户明确确认。 绝不要仅因默认排查故障,或想“顺手清理一下”就运行破坏性命令——磁盘空间不足、容器卡住和缓存过时的问题,几乎总有影响范围更小且不会造成破坏的解决方法。每条命令的准确标志和安全、范围明确的替代方案,请参阅 references/docker-cli-destructive-commands.md。
容器生命周期命令——docker rm、docker rm -f、docker container prune 和 docker kill——风险并不相同,因此下面将它们分为两个等级,而非一概而论。docker stop 遵循紧接在这两个等级之后的另一条相关但不同的可逆操作规则。此列表中的其他所有命令都遵循上述统一规则,不设例外:说明会丢失什么,征得用户明确确认,并等待用户答复后再运行。
等级 1——低门槛容器清理
仅适用于对已停止的容器执行 docker rm <name>,以及对 Agent 在同一会话中先前自行创建并启动、纯粹用于测试或调试的容器执行 docker rm -f <name>——即使容器仍在运行,也适用 -f 例外,因为这是唯一需要用到 -f 的原因。以下条件必须全部满足:容器已停止,或者由 Agent 在本会话中自行创建/启动以用于测试/调试;没有已知的未持久化状态面临丢失风险;操作针对一个已识别的特定容器,而不是范围不明的批量清理;并且 Agent 是在响应本会话中用户的明确要求,而非自行决定采取行动。所有条件都满足时,Agent 会移除该容器,说明已执行的操作,然后继续——无需事先征得用户确认。其他所有情况均适用下文等级 2 中关于 docker rm -f 的规则。
Tier 2 — 需要确认的容器命令
docker kill 始终属于 Tier 2(关于为何不适用已停止容器例外,请参阅参考资料)。同样属于 Tier 2 的还有:docker container prune(它总会清理主机上所有已停止的容器,而不只是 Agent 正在清理的那个)、对不满足上述所有 Tier 1 条件的任何容器执行 docker rm -f(尤其是 Agent 并非在本次会话中创建或启动的运行中容器,或虽由 Agent 创建或启动,但操作时并无用户明确要求的容器)、任何其他不指定范围的清理操作(不论容器状态如何,例如 docker rm -f $(docker ps -aq)、“删除/终止所有容器”)、Agent 未创建且不了解其上下文的容器,以及 Agent 未经用户明确要求而自行采取的任何操作。这些操作的确认要求与本技能中的所有一律适用规则命令相同:准确说明会丢失什么,并在运行任何命令前获得明确确认——没有任何例外。
docker stop — 可逆,不属于分级模型
docker stop 不会删除任何内容——容器仍然存在,可以使用 docker start 重新启动——因此它不属于上述 Tier 1/Tier 2 删除模型。不过,它仍在本技能的适用范围内,因为它会中断正在运行的进程(先发送 SIGTERM,超时后再发送 SIGKILL),并丢弃容器内所有未持久化的状态。对于 Agent 在本次会话中用于测试或调试的容器,可按 Tier 1 处理:停止容器并说明发生了什么,无需阻塞操作以等待确认。对于其他任何容器,先说明容器将停止运行,且任何未保存的内存状态都会丢失,然后再获取确认。
docker system prune— 删除已停止的容器、未使用的网络、悬空镜像和构建缓存;-a还会删除未使用的已标记镜像,--volumes还会删除未使用的匿名卷(不会触及命名卷——删除命名卷需要单独执行docker volume rm)。docker rmi/docker image rm— 删除指定镜像;关于-f对多标签/被引用镜像的确切覆盖行为(部分未经验证),请参阅参考资料。docker image prune -a— 删除任何容器(运行中或已停止)都未引用的所有镜像,而不只是悬空镜像。docker network rm— 删除作为参数传入的指定网络;关于其-f标志与下文docker context rm -f的区别,请参阅参考资料。docker network prune— 删除所有未连接到容器的自定义网络。docker builder prune— 清除 BuildKit 缓存;-a/--all还会删除内部辅助镜像/前端镜像,以及与其他构建输出共享的缓存,导致所有使用该缓存的用户都必须进行冷启动重建。docker buildx rm— 删除构建器实例,这与docker builder prune清除的缓存不同——有关标志的详情,请参阅参考资料。docker context rm— 删除上下文的本地连接配置;不会影响远程资源,但可能无法轻易重建。与上文的docker network rm -f不同,docker context rm -f确实会强制删除当前正在使用的上下文。docker volume rm/docker volume prune(独立使用,不涉及 Compose 项目)— 直接且不可逆地删除卷数据;docker volume prune -a/--all会将默认仅针对匿名卷的范围扩大到命名卷。对于 Compose 项目自己的卷,请改用docker-compose-patterns(参阅“相关技能”);对于在 compose.yaml 中声明为external: true、但不由该 Compose 项目管理的卷,适用本技能的指南,因为 Compose 执行down -v时不会触及此类卷。
相关技能
- 对于 Compose 专用的破坏性命令(
docker compose down -v、docker compose rm -v,以及 Compose 场景下的docker volume rm/docker volume prune),请使用docker-compose-patterns——该技能完整负责这方面的详细指导;本技能仅提供索引。本技能负责独立(非 Compose)场景下的docker volume rm/docker volume prune——请参阅核心指南和references/docker-cli-destructive-commands.md。 - 对于 Dockerfile 内部机制、构建缓存和镜像大小优化(非破坏性事项),请使用
docker-build-strategies。 - 对于首次搭建 Docker 项目脚手架,请使用
docker-project-foundations。 - 对于沙盒(sbx)破坏性命令(
sbx rm、sbx prune),请使用docker-sandboxes-lifecycle——该技能完整负责这方面的详细指导;本技能仅提供索引。Docker Desktop 破坏性命令的防护指南将在合并后放入其专属技能(跟踪状态请参阅references/cross-skill-destructive-command-index.md);该技能发布前,请勿假定其内容。
参考资料
references/docker-cli-destructive-commands.md——逐条说明每个通用 Docker CLI 破坏性命令的具体标志、删除内容,以及安全且范围明确的替代方案。references/cross-skill-destructive-command-index.md——跨所有 Docker 技能的破坏性命令对照表,其中包含 Docker Desktop 的待定占位项。
资源
本技能不包含捆绑资源。
检查
checks/verification.md——人工审查操作手册,包含处理破坏性命令请求的错误/正确对话示例。