ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Telepresence compose create:为远程集群服务创建容器的完整命令行指南

Telepresence compose create:为远程集群服务创建容器的完整命令行指南 云原生开发工具微服务网络【免费下载链接】telepresenceLocal development against a remote Kubernetes or OpenShift cluster项目地址https://gitcode.com/gh_mirrors/te/telepresence点击查看免费下载telepresence compose create是 Telepresence Docker Compose 扩展体系中的一个核心命令它在不启动容器的情况下为 Compose 文件中声明了x-tele扩展的服务创建容器并完成集群连接、附件attachment与代理网络的编排。阅读本文后你将掌握该命令的完整用法、全部标志参数的含义与适用场景、它与telepresence compose up/down/stop的状态机关系以及它在 Telepresence 源码中的底层实现机制。命令概览与定位telepresence compose系列命令本质上是docker compose的超集它以 Docker Compose 的 CLI 定义为模板在原有子命令之上叠加 Telepresence 的x-tele扩展处理逻辑。该命令族注册于 cmd/compose.go其Short描述为 Define and run multi-container applications with Telepresence and Docker子命令由 compose.GenerateSubCommands 根据内嵌的dc-cli.json声明动态生成。telepresence compose create对应标准 Docker Compose 的docker compose create子命令其官方描述为Creates containers for a service。核心区别在于Telepresence 版本会在调用真正的docker compose create之前先完成以下编排工作解析 Compose 项目中各服务的x-tele扩展建立指向远程 Kubernetes/OpenShift 集群的连接connection为扩展服务创建附件attachment包括代理、拦截、摄取或替换等行为改写 Compose 项目注入teleroute网络、远程挂载卷telemount volume与必要的环境变量将改写后的 Compose 文件落盘并把文件路径与受管卷名保存到 daemon 信息中再执行docker compose create。与up的最大差异在于create只创建容器、不启动它们因此在所有容器创建完成后会结束任何已有的附件attachments。基本用法telepresence compose create [flags] [services][services]为可选的 Compose 服务名列表。当指定了具体服务名时只会为这些服务创建容器未指定时作用于 Compose 文件中声明的全部服务。从源码看服务名列表最终会透传给真正的docker compose进程transform.go 中runCompose以append(opts, t.config.services...)的方式追加到命令行参数末尾。通过-h, --help可查看该子命令的帮助信息。全部标志参数详解telepresence compose create的标志分为三组通用 Compose 标志、create 专属标志以及 Telepresence 全局标志。以下参数声明与默认值均来自 dc-cli.json 与官方 CLI 参考文档 telepresence_compose_create.md。Compose 标志在telepresence compose父命令上标志类型说明--env-file stringArraystringArray可选的 env 文件可多次指定。优先级遵循 Docker Compose 的加载规则先应用操作系统环境变量再加载显式指定的 env 文件最后读取.env中的 dot-env 变量参见 config.go 中的toProjectOptions调用链-f, --file stringArraystringArrayCompose 配置文件可多次指定支持覆盖合并--profile stringArraystringArray要启用的 profile可多次指定--project-directory stringstring指定替代的工作目录默认值为第一个指定 Compose 文件所在路径--project-name stringstring项目名称。若未指定将由 Compose 依据项目目录推断这些标志在 config.go 中以pflag.FlagSet的方式挂到父命令上随后由createProject统一转换成传递给docker compose的参数transform.go包括--file、--project-name、--project-directory、--progress、--env-file与 profile 标志。create 专属标志标志类型说明--buildbool在启动容器前构建镜像--force-recreatebool即使容器配置与镜像没有变化也强制重新创建容器--no-buildbool即使构建是既定策略也不构建镜像--no-recreatebool若容器已存在则不重建与--force-recreate互斥--pull stringstring运行前拉取镜像的策略取值always|missing|never|build默认policy--quiet-pullbool拉取镜像时不打印进度信息--remove-orphansbool移除 Compose 文件中未定义服务的孤立容器--scale uint32uint32将SERVICE扩展到NUM个实例若 Compose 文件中有 scale 设置则覆盖之-y, --yesbool对所有提示都回答 yes以非交互模式运行其中--scale对应 Docker Compose 的scale类型参数--pull的policy默认值含义是遵循 Compose 文件中的pull_policy设置。需要注意--force-recreate与--no-recreate不只是透传给 Docker 的开关它们还直接影响 Telepresence 的改写行为。在 transform.go 的runCommand中canCreate初始为selectsAll即是否选中全部扩展服务会被--no-recreatetrue置为falseforceRecreate直接从标志值读取。当--force-recreate为真时即使 daemon 信息中已保存了改写后的 Compose 文件也会重新应用附件并重写该文件createConfigFile从而更新 telemount 卷集合而canCreate为假时若首次调用未包含全部扩展服务会直接返回错误the initial invocation of compose up or compose create must include all extended services。Telepresence 全局标志标志说明--config stringTelepresence 配置文件路径--format string输出格式支持json、yaml、json-stream、default默认default--progress string进度输出类型取值auto、tty、plain、json、quiet默认auto--use string唯一标识 daemon 容器的匹配表达式--progress非auto时会被透传为docker compose --progress参数见 transform.go。create 在 compose 生命周期中的位置telepresence compose create是 docs/reference/compose.md 所描述的状态机中的关键一环各命令之间的状态转换如下命令行为telepresence compose up确保扩展服务处于正确状态连接、附件、代理、容器全部就绪telepresence compose create与up类似但不启动容器所有容器创建完成后结束任何已有附件telepresence compose stop结束附件但保持 Telepresence 连接——因为现有容器仍在使用由该连接支撑的teleroute网络telepresence compose down结束附件、终止网络并退出 Telepresencetelepresence config检测项目是否已启动是则输出扩展后的项目文件否则输出原 Compose 文件的规范形式telepresence quit检测是否有telepresence compose正在运行若有则发出telepresence compose downcreate的典型应用场景是预编排先在 CI 或脚本中以非交互方式配合-y把容器与网络拓扑准备好待后续再up启动从而把耗时的镜像拉取与容器创建步骤与启动步骤分离。底层实现create 的执行链telepresence compose create的执行可拆解为三个阶段对应源码中的三个关键函数1. 解析扩展与服务选择newTransformertransform.go 中的newTransformer遍历项目内每个服务若检测到x-tele扩展键常量extensionKey x-tele定义于 config.go则调用parseServiceExtension解析为对应的扩展类型。若命令行指定了[services]而该服务不在其中selectsAll会被置为false后续canCreate随之变化。2. 生成改写后的 Compose 文件createConfigFilecreateConfigFile 的流程为收集所有连接connection的集群子网通过teleroute.FindNonConflictingSubnet为 Compose 的默认网络预分配一个不与 Kubernetes 集群子网冲突的 IPAM 子网configureDefaultNetwork见 transform.goapplyAttachments把各附件的服务改写代理替换、卷注入、网络挂载、环境变量应用到项目模型上并确保顶层x-tele扩展被序列化回项目中transform.go将改写后的 YAML 写入临时文件首次tpc-*.yaml或覆盖 daemon 信息中已保存的 Compose 文件重写路径如--force-recreate把 Compose 文件路径与 telemount 卷名列表保存进 daemon 信息ComposeFile、ComposeVolumes保证连接关闭时这些卷能被正确清理。3. 透传执行 docker compose createrunComposerunCompose 最终调用本机docker可执行文件执行docker compose --file 改写后的文件 [compose标志] create [create标志] [services...]。由于create不在up分支中不会走runAttachedUp的上下文取消清理逻辑属于一次性的编排命令。这一实现也印证了官方文档对 create 的描述Creates containers for a service——Telepresence 只是把容器创建前的集群编排工作全部自动化了。实操示例基础用法为全部服务创建容器telepresence compose create仅创建指定服务且跳过镜像构建telepresence compose create --no-build api worker使用显式 Compose 文件与项目名telepresence compose -f docker-compose.yml -f docker-compose.override.yml \ --project-name myapp \ --profile debug \ create非交互式预创建CI 场景telepresence compose create -y --quiet-pull --remove-orphans强制重建并重新应用附件telepresence compose create --force-recreate --build按策略拉取并扩展副本数telepresence compose create --pull always --scale api3结合 x-tele 扩展理解 create 的作用对象create真正编排的对象是 Compose 文件中声明了x-tele扩展的服务。该扩展可以出现在顶层描述连接与挂载配置或单个服务上描述扩展类型支持的扩展类型包括connect、proxy、ingest、intercept、replace、wiretap详见 docs/reference/compose.md 的 Service Extensions 章节。例如一个典型配置x-tele: connections: - namespace: default services: api: x-tele: type: intercept workload: my-api执行telepresence compose create时Telepresence 会为api服务建立附件共享被拦截容器的环境与卷、注入teleroute网络并把改写后的配置交给docker compose create落地为容器。这也解释了为何 create 完成后会结束已有附件——容器已就绪但未运行附件所代表的实时关联拦截、代理不需要在创建阶段保持。小结telepresence compose create在标准 Docker Compose 的create语义之上增加了 Telepresence 的集群连接、附件编排与 Compose 文件改写能力是 CI 预编排和先建容器、后启服务工作流的首选命令。掌握其标志语义尤其是--force-recreate/--no-recreate对改写行为的双重影响与状态机位置即可安全地将它嵌入本地开发与自动化流水线。赞分享云原生开发工具微服务网络【免费下载链接】telepresenceLocal development against a remote Kubernetes or OpenShift cluster项目地址https://gitcode.com/gh_mirrors/te/telepresence点击查看免费下载相关推荐Telepresence compose pause 命令详解暂停 Compose 服务的完整指南Telepresence compose pause 命令详解暂停 Compose 服务的完整指南 telepresence compose pause 是云原生开发工具微服务网络Telepresence compose commit 命令详解从服务容器变更创建新镜像Telepresence compose commit 命令详解从服务容器变更创建新镜像 telepresence compose commit 是 Tele云原生开发工具微服务网络Telepresence compose start 命令详解启动已创建容器的完整参数指南Telepresence compose start 命令详解启动已创建容器的完整参数指南 telepresence compose start 是 Tele云原生开发工具微服务网络上一篇timeago.js终极指南10个实用场景应用案例下一篇CANN ops-transformer 稀疏 MLA 反向负载均衡前置算子aclnnSparseFlashMlaGradMetadata 接口全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表