
云原生开发工具微服务网络【免费下载链接】telepresenceLocal development against a remote Kubernetes or OpenShift cluster项目地址https://gitcode.com/gh_mirrors/te/telepresence点击查看免费下载telepresence compose kill是 Telepresence Docker Compose 扩展提供的一个子命令用于**强制停止Force stop**由 Compose 项目启动的服务容器。本文以该命令的 CLI 参考文档为核心结合telepresence compose命令族的实现源码pkg/client/cli/docker/compose/与pkg/client/cli/cmd/compose.go完整梳理其用法、全部参数及默认值、与stop的区别以及它在 Telepresence 附件attachment生命周期中的实际行为帮助你在本地对接远端 Kubernetes 集群的开发场景中正确使用容器终止操作。命令概览语法与用途kill的定位与原生docker compose kill一致——直接向目标容器发送信号以强制终止不做优雅停机等待。其基本语法为telepresence compose kill [flags] [services][services]可选参数指定要强制停止的服务名省略时作用于 Compose 项目中所有运行中的服务。[flags]命令自身的参数包括 Compose 通用参数、kill专属参数与全局参数详见下文。该命令由telepresence compose父命令动态生成。从源码看父命令定义于 pkg/client/cli/cmd/compose.go其Use为compose command [flags]并通过compose.GenerateSubCommands(cmd)一次性注册kill、stop、up、down等全部子命令。子命令的元数据名称、用法、描述、参数来自内嵌的 dc-cli.json——该文件记录了与 Docker Compose 一致的命令定义kill的定义如下{ name: kill, usage: docker compose kill [OPTIONS] [SERVICE...], description: Force stop service containers, flags: [ { name: dry-run, type: bool, description: Execute command in dry run mode }, { name: remove-orphans, type: bool, description: Remove containers for services not defined in the Compose file }, { name: signal, shorthand: s, type: string, description: SIGNAL to send to the container, default: \SIGKILL\ } ] }对应地子命令的解析实现位于 pkg/client/cli/docker/compose/config.go 的subCommand方法它以generate.FlagSet从上述 JSON 生成参数集合并设置了cmdFlags.SetInterspersed(false)即在遇到第一个非参数项服务名后停止解析后续参数——这与原生docker compose的行为一致避免把服务名之后的-qO-之类的参数误当作标志。参数完整说明命令自身 Flags参数说明-h, --help显示kill命令的帮助信息Compose flagstelepresence compose全局共享的 Compose 参数这些参数在compose父命令层注册见 config.go 的addComposeFlagskill同样可用参数类型说明默认值--env-file stringArraystringArray可选的环境文件可重复指定空-f, --file stringArraystringArrayCompose 配置文件路径可重复指定空按 Compose 默认查找规则--profile stringArraystringArray要启用的 profile可重复指定空--project-directory stringstring指定替代工作目录第一个 Compose 文件所在目录--project-name stringstring项目名称空由 Compose 推断从实现看这些参数通过toProjectOptions汇聚到 compose-go 的ProjectOptions中config.go并遵循WithOsEnv操作系统环境变量优先、WithEnvFiles、WithDotEnv、WithConfigFileEnv、WithDefaultConfigPath等加载顺序--profile会被profileFlags()转换为重复的--profile参数再透传给底层docker compose。Compose kill flagskill专属参数参数类型说明默认值--remove-orphansbool同时移除未在 Compose 文件中定义的服务所对应的容器false-s, --signal stringstring发送给容器的信号SIGKILL其中--signal是关键参数kill之所以是“强制停止”正是因为默认发送SIGKILL不可捕获、不可忽略进程被内核直接终止。你可以通过-s改用其他信号例如-s SIGTERM、-s SIGHUP以满足特殊的调试需求。而--remove-orphans用于清理那些不在当前 Compose 文件中定义、却仍在运行的遗留容器。Global FlagsTelepresence 全局参数参数类型说明默认值--config stringstringTelepresence 配置文件路径空使用默认查找位置--format stringstring输出格式支持json、yaml、json-stream、defaultdefault--progress stringstring进度输出类型auto、tty、plain、json、quietauto--use stringstring唯一标识 daemon 容器的匹配表达式空--progress会被读取并写入进度输出上下文config.go--format、--config、--use则与 Telepresence 全局 CLI 框架一致用于控制输出格式、配置文件位置与 daemon 容器的选择。kill 与 stop 的本质区别在telepresence compose命令族中kill和stop都是终止容器的手段但语义截然不同stop对应 telepresence compose stop是优雅停机先向容器主进程发送SIGTERM等待其自行退出并可配合-t, --timeout指定超时秒数超时后才强制终止。kill是强制终止默认直接发送SIGKILL进程无机会清理资源适合容器卡死、无法响应SIGTERM的故障场景。这一点同样反映在生命周期语义上。根据 docs/reference/compose.md 的 States 一节telepresence compose up确保扩展服务处于正确状态telepresence compose create与up类似但不启动容器telepresence compose stop结束附件attachments但因为现有容器仍使用由该连接支撑的teleroute网络Telepresence 保持连接telepresence compose down结束附件、终止网络并退出 Telepresence。kill位于stop与down之间它只负责“杀掉容器”不主动结束附件、不终止网络、不退出 Telepresence 连接。因此执行kill后集群连接与teleroute网络仍然可用你可以接着用telepresence compose up快速重建容器或继续调试。执行流程kill 命令如何工作虽然kill最终由底层docker compose kill完成信号发送但 Telepresence 在其之上包了一层“附件管理”逻辑。以 config.go 的run方法为主线执行路径如下判定连接需求c.mustBeConnected true仅build、create、start、up允许在未连接时执行。也就是说执行kill时若 daemon 尚未连接且项目中存在扩展服务命令会在 daemon 不存在时报错或直接透传给docker compose以产生预期的错误输出。加载项目loadProject读取 Compose 文件并解析顶层x-tele扩展构建transformertransform.go。连接与附加connect为每个扩展服务建立连接config.go随后attach并发地为各服务激活附件。构建并透传命令runCommand通过createProject把项目名、项目目录、profile、env-file 等组织成参数再由runComposetransform.go以docker compose args ...方式调用 Docker 可执行文件最终执行docker compose kill。值得注意的一个细节telepresence compose会解析x-tele扩展docs/reference/compose.md 中定义的x-tele顶层扩展与各服务扩展并基于附件改写 Compose 文件后写入临时文件tpc-*.yaml再把这个改写后的文件交给底层docker composetransform.go 的createConfigFile。因此kill针对的始终是“Telepresence 增强后的项目”而非你磁盘上未经改写的原始 Compose 文件——这是它与直接使用docker compose kill的关键差异。实用示例强制停止项目中的全部服务容器telepresence compose kill仅强制停止web与api两个服务并让api先收到SIGTERM再退出telepresence compose kill web api -s SIGTERM指定 Compose 文件并清理未定义服务的容器telepresence compose -f docker-compose.dev.yml kill --remove-orphans指定项目名与工作目录telepresence compose --project-name myapp --project-directory ./dev kill相关命令与延伸阅读telepresence compose命令族总览kill是其中 41 个子命令之一。telepresence compose stop优雅停机SIGTERM 超时与kill对比使用。telepresence compose down停止并移除容器与网络、结束附件并断开连接。Telepresence Docker Compose Extensionx-tele扩展定义与附件生命周期 States 说明。实现细节可深入 pkg/client/cli/docker/compose/config.go 与 pkg/client/cli/docker/compose/transform.go参数元数据见 dc-cli.json。小结telepresence compose kill是一个“薄封装”的强制停止命令参数与语义对齐原生docker compose kill默认以SIGKILL强制终止容器同时它运行在 Telepresence 的附件生命周期之上执行前保证集群连接就绪、执行后不拆除连接与网络。理解它与stop、down的差异能让你在本地对接远端集群的开发循环中精准选择“强制杀容器”“优雅停机”与“整体拆除”三种清理手段。赞分享云原生开发工具微服务网络【免费下载链接】telepresenceLocal development against a remote Kubernetes or OpenShift cluster项目地址https://gitcode.com/gh_mirrors/te/telepresence点击查看免费下载相关推荐Docker Compose CLI kill 命令详解强制停止服务容器、信号控制与孤儿容器清理Docker Compose CLI kill 命令详解强制停止服务容器、信号控制与孤儿容器清理 docker compose kill 用于向 Compos云原生容器编排DevOpsCLIOpen Mercato销售模块实战指南从报价、订单到发货的完整流程Open Mercato销售模块实战指南从报价、订单到发货的完整流程 Open Mercato 是一个开源的 TypeScript AI 工程基础框架为 CDagger TypeScript SDK 服务停止指南ServiceStopOpts 与 kill 参数详解Dagger TypeScript SDK 服务停止指南ServiceStopOpts 与 kill 参数详解 本文聚焦 Dagger 0.21 TypeScDevOpsCI/CD后端CLI云原生上一篇5个嵌入式开发痛点与EasyLogger的轻量级解决方案下一篇RecafJava逆向工程的终极指南与实战教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考