
云原生开发工具DevOps容器编排【免费下载链接】devspaceDevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.项目地址https://gitcode.com/gh_mirrors/dev/devspace点击查看免费下载DevSpace 的devspace cleanup命令是一组用于清理开发资源的工具命令它由两个子命令组成devspace cleanup images负责删除构建过程中在本地 Docker 中生成的镜像devspace cleanup local-registry负责删除部署在 Kubernetes 集群内的本地镜像仓库local registry。本文围绕这两个子命令逐一说明命令语法、全部参数语义、底层执行流程与关键源码逻辑并给出可直接复制的实战用法。命令概览devspace cleanup是 DevSpace 顶层命令devspace下的一个分组命令本身不执行具体清理动作仅用于聚合其子命令。在命令实现中它通过 cmd/cleanup/cleanup.go 中的NewCleanupCmd注册了两个子命令并预留了插件扩展能力devspace cleanup images删除所有本地创建的 Docker 镜像devspace cleanup local-registry删除集群中的本地镜像仓库。从源码结构看命令还通过plugin.AddPluginCommands(cleanupCmd, plugins, cleanup)为第三方插件提供挂载入口因此用户也可以为cleanup组注册自定义的清理子命令。命令帮助信息与基础用法两个子命令都不接受位置参数Args: cobra.NoArgs用法格式均为devspace cleanup subcommand [flags]devspace cleanup images [flags] devspace cleanup local-registry [flags]子命令自身的 Flags两个子命令均只声明了一个自身 Flags-h, --help help for cleanup / images / local-registry即-h/--help用于查看命令帮助。其余大量配置均来自 DevSpace 的全局与继承 FlagsGlobal Inherited Flags这些 Flags 在每个子命令上都可用。全局与继承 Flags 详解以下 Flags 由根命令与全局配置层提供应用于cleanup及其所有子命令Flag类型说明--debugbool出错时打印堆栈追踪信息便于定位问题--disable-profile-activationbool为true时忽略所有 profile 激活--inactivity-timeout intint用户在无鼠标/键盘交互的指定分钟数后自动退出 DevSpace0表示禁用仅 Windows 和 macOS 支持--kube-context stringstring指定要使用的 Kubernetes context--kubeconfig stringstring指定要使用的 kubeconfig 路径-n, --namespace stringstring指定要使用的 Kubernetes namespace--no-colorsbool关闭日志输出中的颜色高亮避免在不同终端背景色下出现不可见输出--no-warnbool为true时当部署到与之前不同的 namespace 或 kube-context 时不显示警告--override-name stringstring覆盖devspace.yaml中提供的 DevSpace 项目名称-p, --profile stringsstring 数组要应用的 DevSpace profiles多个 profile 按指定顺序依次应用--silentbool静默模式除 panic 与 fatal 外不输出任何 devspace 日志-s, --switch-contextbool切换并使用上次部署 DevSpace 项目所用的 kube context 和 namespace--var stringsstring 数组在执行期间覆盖变量例如--varMYVARMYVALUE在实际使用中最常配合cleanup命令使用的是--kube-context、--namespace与--profile等 Flag它们决定了命令作用于哪个集群、命名空间以及加载哪份配置。devspace cleanup images清理本地 Docker 镜像命令行为说明devspace cleanup images用于删除 DevSpace 在构建过程中创建的本地 Docker 镜像其完整帮助描述为Deletes all locally created docker images from docker。它并不删除集群中的任何资源只针对本机 Docker 守护进程执行清理。底层执行流程根据 cmd/cleanup/images.go 中的RunCleanupImages实现命令的执行步骤如下加载配置根目录通过configLoader.SetDevSpaceRoot(log)定位devspace.yaml所在的项目根目录若找不到配置文件命令直接返回message.ConfigNotFound错误并终止。创建 Kubernetes 客户端调用f.NewKubeClientFromContext(cmd.KubeContext, cmd.Namespace)基于当前 kube-context 与 namespace 创建客户端用于后续与 minikube 的 Docker 环境交互。创建 Docker 客户端调用docker.NewClientWithMinikube(ctx, kubeClient, true, log)优先尝试从 minikube 的 Docker 环境创建客户端preferMinikubetrue失败时回退到本机 Docker 环境变量。对应实现位于 pkg/devspace/docker/client.go。加载完整配置通过configLoader.Load(...)加载配置若配置中的config.Images为空则输出No images found in config to delete并直接结束。校验 Docker 可用性调用client.Ping(ctx)如果 Docker 未运行则报错Docker seems to be not running。逐个删除镜像遍历config.Images中的每个镜像配置调用client.DeleteImageByName(ctx, imageConfig.Image, log)删除对应镜像。删除悬空镜像反复调用client.DeleteImageByFilter(ctx, filters.NewArgs(filters.Arg(dangling, true)), log)删除 dangling悬空镜像直到没有可删除的条目为止。镜像删除的底层实现在 pkg/devspace/docker/images.go 中两个删除方法的实现如下DeleteImageByName会将镜像名去掉首尾空白后转换为reference过滤器再调用DeleteImageByFilterDeleteImageByFilter先用ImageList按过滤器列出镜像再逐个以PruneChildren: true, Force: true的选项调用ImageRemove收集每个镜像的删除/取消标签Deleted/Untagged响应。因此在devspace cleanup images的执行日志中你可以看到形如Deleted 镜像 ID与Untagged 镜像名的两类输出分别代表镜像被彻底删除或只是某个标签被移除而镜像仍被其他标签引用。实战用法示例# 清理当前项目在本地 Docker 中创建的所有镜像 devspace cleanup images # 指定 kube-context 与 namespace用于 minikube/多集群场景 devspace cleanup images --kube-context minikube --namespace myproject # 清理时应用 devspace.yaml 中的某个 profile devspace cleanup images -p production # 使用静默模式执行清理 devspace cleanup images --silent需要注意的是该命令只会删除devspace.yaml的images段中声明过的镜像以及清理过程中产生的悬空镜像不会动到本机 Docker 中的其他镜像。devspace cleanup local-registry删除集群内的本地镜像仓库命令行为说明devspace cleanup local-registry用于删除部署在 Kubernetes 集群内的本地镜像仓库local registry。其完整帮助描述为Deletes the local image registry。该本地仓库是 DevSpace 在目标集群没有镜像推送权限且无法使用kind load docker-image时自动部署到集群中的私有 registry用于中转构建产物。本地镜像仓库的部署形态根据 docs/pages/configuration/localRegistry/README.mdx 与 pkg/devspace/build/localregistry 的源码默认不启用持久化时本地仓库由DeploymentemptyDir卷承载镜像数据在重启后会丢失启用persistence.enabled: true后改用StatefulSet PVC 承载相关实现见 statefulset.go仓库默认名称为registry镜像为registry:2.8.1BuildKit 侧车镜像为moby/buildkit:master-rootless监听端口为5000见 options.go 中的默认值常量仓库通过 NodePort Service 暴露DevSpace 会把所有镜像 URL 透明改写为localhost:[NODE_PORT]形式见 local_registry.go 中的Start与RewriteImage实现。devspace cleanup local-registry正是用来回收这些集群内资源StatefulSet/Deployment 与 Service的命令。底层执行流程根据 cmd/cleanup/local_registry.go 中的RunCleanupLocalRegistry实现命令的执行步骤如下定位项目根目录调用configLoader.SetDevSpaceRoot(log)若不存在devspace.yaml则返回message.ConfigNotFound。创建 kubectl 客户端调用f.NewKubeClientFromContext(...)创建客户端如果创建失败如 kube-context 不可用命令会打印警告并将客户端置为nil不会直接中止。加载本地缓存调用configLoader.LoadLocalCache()获取本地缓存随后通过kubectl.CheckKubeContext(...)检查当前 kube-context/namespace 与上次部署是否一致必要时显示警告或按--switch-context切换。组装清理选项基于配置中的config.LocalRegistry段构造localregistry.OptionsWithNamespace、WithLocalRegistryConfig其默认值与字段映射见 options.go。探测目标资源分别尝试获取同名的 StatefulSet、Deployment 与 Service资源名默认registry。若三者都不存在输出No local registry found.并结束。危险操作确认由于删除仓库会连带删除其中存储的所有镜像命令会弹出确认问题This will delete your local registry and all the images it contains. Do you wish to continue?选项为Yes/No选择No则直接退出。执行删除按顺序删除存在的 StatefulSet、Deployment 与 Service最后输出Successfully cleaned up local registry。从源码可以看到该子命令对“删除数据”这一破坏性操作做了双重保护先探测资源是否存在避免误删无关资源再要求用户显式确认。与 localRegistry 配置的关联cleanup local-registry删除的是由devspace.yaml中localRegistry配置段创建的资源。该配置段的可选项及其默认值如下字段定义见 pkg/devspace/config/versions/latest/schema.go 中的LocalRegistryConfig字段类型默认值说明enabledbooleanfalse未设置时作为无推送权限时的回退方案true时始终使用本地仓库false时永不使用localbuildbooleanfalse是否使用本地 docker builder 替代集群内构建namespacestring当前 context 的 namespace本地仓库部署的命名空间namestringregistry本地仓库 Deployment/Service 的名称imagestringregistry:2.8.1本地仓库镜像buildKitImagestringmoby/buildkit:master-rootlessBuildKit 侧车镜像portinteger5000registry 镜像监听端口persistence.enabledbooleanfalse是否启用持久化true时使用 StatefulSet PVCpersistence.sizestring5Gi持久卷大小persistence.storageClassNamestring集群默认 StorageClass持久卷的存储类因此devspace cleanup local-registry会按照localRegistry配置中的namespace与name默认registry去查找并删除集群内资源清理对象与配置严格对应。实战用法示例# 清理当前集群中由 DevSpace 创建的本地镜像仓库 devspace cleanup local-registry # 清理前先指定正确的 kube-context 与 namespace devspace cleanup local-registry --kube-context mycluster --namespace myproject # 不希望看到 kube-context/namespace 切换警告时使用 devspace cleanup local-registry --no-warn # 使用上次部署时的 context 与 namespace devspace cleanup local-registry --switch-context由于该命令会删除仓库内全部镜像且无法恢复建议在执行前确认目标集群与命名空间无误。常见问题与注意事项1.devspace cleanup images报 “Docker seems to be not running”说明本地 Docker 守护进程或 minikube 的 Docker 环境不可用。请先启动 Docker或在 minikube 场景下确认--kube-context minikube指向正确。2.devspace cleanup找不到devspace.yaml两个子命令在执行前都会调用SetDevSpaceRoot定位项目根目录因此必须在包含devspace.yaml的项目目录中执行或在devspace.yaml所在目录下运行。3.devspace cleanup local-registry不会删除 namespace 本身从实现看命令只删除 StatefulSet、Deployment 与 Service 这三种资源不会删除它们所在的 namespace。4.images子命令只清理本项目声明的镜像它遍历的是devspace.yaml的images段而非本机全部镜像悬空镜像的清理则通过danglingtrue过滤器完成。5. 关于本地仓库数据安全未启用持久化的本地仓库使用emptyDir重启即丢失数据启用持久化后数据保存在 PVC 中cleanup local-registry删除 StatefulSet 时相关 PVC 及其数据会一并被清理务必确认确认提示后再操作。小结devspace cleanup为 DevSpace 开发工作流提供了两条资源回收路径cleanup images面向本机 Docker 守护进程按项目声明的镜像与悬空镜像维度清理cleanup local-registry面向集群按localRegistry配置删除 DevSpace 自动部署的本地镜像仓库。结合其全局 Flags如--kube-context、--namespace、--no-warn、--switch-context可以精确控制在多集群、多命名空间环境下的清理范围。如果需要深入源码可以继续阅读 cmd/cleanup/cleanup.go、cmd/cleanup/images.go、cmd/cleanup/local_registry.go以及镜像删除实现 pkg/devspace/docker/images.go 和本地仓库实现 pkg/devspace/build/localregistry/local_registry.go。赞分享云原生开发工具DevOps容器编排【免费下载链接】devspaceDevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.项目地址https://gitcode.com/gh_mirrors/dev/devspace点击查看免费下载相关推荐DevSpace cleanup 命令全解析本地 Docker 镜像与集群内本地镜像仓库的清理实战DevSpace cleanup 命令全解析本地 Docker 镜像与集群内本地镜像仓库的清理实战 导读 DevSpace 的 devspace cleanu云原生开发工具DevOps容器编排DevSpace 清理本地 Docker 镜像devspace cleanup images 命令完整指南DevSpace 清理本地 Docker 镜像 devspace cleanup images 命令完整指南 devspace cleanup images云原生开发工具DevOps容器编排DevSpace cleanup local-registry 命令详解删除 Kubernetes 集群内本地镜像仓库的完整指南DevSpace cleanup local registry 命令详解删除 Kubernetes 集群内本地镜像仓库的完整指南 导读 devspace cl云原生开发工具DevOps容器编排创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考