Buildah containers 命令全解析:列出工作容器及其基础镜像
云原生【免费下载链接】buildahA tool that facilitates building OCI images.项目地址https://gitcode.com/gh_mirrors/bu/buildah点击查看免费下载本篇技术指南聚焦 Buildah 的buildah containers命令别名list、ls、ps它用于列出当前存储中处于工作状态的 Buildah 构建容器、它们的名称与 ID以及初始化它们所依据的基础镜像的名称与 ID。读完本文你将掌握该命令的全部选项--all、--filter、--format、--json、--noheading、--notruncate、--quiet的用法、输出格式与匹配规则并能结合源码理解其实现原理从而在日常镜像构建、容器管理中高效地查询工作容器状态。命令概述buildah containers是一个用于**列出 Buildah 工作容器working container**及其基础镜像的命令。工作容器是执行buildah from或buildah bud即buildah build时创建的临时容器镜像构建过程中所有文件变更都发生在其中最终通过buildah commit提交为新镜像。命令的正式用法参见 SYNOPSISbuildah containers [options]该命令不接受位置参数。从 cmd/buildah/containers.go 的源码可以看到若传入多余参数会直接报错if len(args) 0 { return errors.New(buildah containers does not accept arguments) }命令注册时定义了三个别名习惯 Docker/Podman 的用户可以无缝迁移Use: containers, Aliases: []string{list, ls, ps},因此buildah ps、buildah ls、buildah list与buildah containers完全等价。默认输出解读不带任何选项执行buildah containers默认输出为表格形式每行对应一个由 Buildah 创建的工作容器CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME ccf84de04b80 * 53ce4390f2ad registry.access.redhat.com/ub... ubi8-working-container 45be1d806fc5 * 16ea53ea7c65 docker.io/library/busybox:latest busybox-working-container各列含义列含义CONTAINER ID容器的短 ID默认截断为 12 位BUILDER标记该容器是否由 Buildah 创建*表示是 Buildah 工作容器IMAGE ID基础镜像的短 IDIMAGE NAME基础镜像的名称默认超过 32 字符会被截断并以...结尾CONTAINER NAME容器名称默认命名模式为镜像名-working-container默认情况下ID 被截断为 12 位、镜像名截断为 32 字符。对应源码位于 containerOutputUsingFormatString// 截断模式 fmt.Printf(%-12.12s %-8s %-12.12s %-32s %s\n, params.ContainerID, params.Builder, params.ImageID, util.TruncateString(params.ImageName, 32), params.ContainerName) // 非截断模式 fmt.Printf(%-64s %-8s %-64s %-32s %s\n, params.ContainerID, params.Builder, params.ImageID, params.ImageName, params.ContainerName)其中镜像名的...截断由 util.TruncateString 实现超过指定长度32时末尾替换为省略号。选项详解--all, -a列出所有容器包括那些并非由 Buildah 创建、也未在使用的容器例如由 Podman 创建的普通容器。Buildah 创建的容器会在BUILDER列以*标记。从源码 outputContainers 可以看到实现思路--all模式下读取存储中全部容器store.Containers()并通过builderMap记录 Buildah 工作容器的 ID 集合以此判定每行是否标记*。_, ours : builderMap[container.ID] builder : if ours { builder * }--filter, -f按给定条件过滤输出。支持的过滤器如下过滤器描述id容器 ID 前缀匹配name容器名称包含匹配子串匹配ancestor镜像名称或镜像 ID匹配创建容器所用的镜像或其后代过滤器格式为keyvalue多个过滤器以逗号分隔。例如buildah containers --filter ancestorubuntu输出CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME fbfd3505376e * 0ff04b2e7b63 docker.io/library/ubuntu:latest ubuntu-working-container过滤器解析逻辑在 parseCtrFilter先按,分割再按第一个拆成键值对未知过滤器键会报错invalid filter %q。三种过滤器的实际匹配规则如下matchesCtrFilterid使用前缀匹配strings.HasPrefix见 matchesID因此传入容器 ID 的前几位即可name使用子串包含匹配strings.Contains见 matchesCtrName无需精确完整名称ancestor先尝试镜像 ID 前缀匹配再尝试镜像名称后缀匹配见 matchesAncestor。名称匹配时若参数含:带 tag则要求仓库名后缀与 tag 均一致否则仅匹配仓库名后缀见 matchesReference。--format使用 Go template 自定义输出格式。支持的占位符占位符描述.ContainerID容器 ID.Builder该容器是否由 Buildah 创建.ImageID镜像 ID.ImageName镜像名称.ContainerName容器名称示例仅输出容器 ID 与名称buildah containers --format {{.ContainerID}} {{.ContainerName}}ccf84de04b80c309ce6586997c79a769033dc4129db903c1882bc24a058438b8 ubi8-working-container 45be1d806fc533fcfc2beee77e424d87e5990d3ce9214d6b374677d6630bba07 busybox-working-container也可以混入任意文本buildah containers --format Container ID: {{.ContainerID}}Container ID: ccf84de04b80c309ce6586997c79a769033dc4129db903c1882bc24a058438b8 Container ID: 45be1d806fc533fcfc2beee77e424d87e5990d3ce9214d6b374677d6630bba07实现上--format通过formats.StdoutTemplateArray结合 containersHeader 定义的列头映射渲染输出outputContainers。注意--quiet与--format互斥同时指定会直接报错if c.Flag(quiet).Changed c.Flag(format).Changed { return errors.New(quiet and format are mutually exclusive) }--json以 JSON 数组格式输出便于脚本解析。示例如下文档原样示例buildah containers --json[ { id: ccf84de04b80c309ce6586997c79a769033dc4129db903c1882bc24a058438b8, builder: true, imageid: 53ce4390f2adb1681eb1a90ec8b48c49c015e0a8d336c197637e7f65e365fa9e, imagename: registry.access.redhat.com/ubi8:latest, containername: ubi8-working-container }, { id: 45be1d806fc533fcfc2beee77e424d87e5990d3ce9214d6b374677d6630bba07, builder: true, imageid: 16ea53ea7c652456803632d67517b78a4f9075a10bfdc4fc6b7b4cbf2bc98497, imagename: docker.io/library/busybox:latest, containername: busybox-working-container } ]JSON 字段结构与源码中的 jsonContainer 结构体一一对应id、builder布尔值、imageid、imagename、containername由json.MarshalIndent(..., , )生成带缩进的可读输出。--noheading, -n省略表格的列标题行只输出数据行便于与其它工具组合做纯数据流处理。--notruncate不截断 ID 与镜像名称输出完整 64 位十六进制 ID 与完整镜像引用。结合 containerOutputHeader 可看到截断/非截断两种表头布局12 位 vs 64 位列宽。--quiet, -q只输出容器 ID每行一个适合直接传递给其它命令如buildah rm使用buildah containers --quietccf84de04b80c309ce6586997c79a769033dc4129db903c1882bc24a058438b8 45be1d806fc533fcfc2beee77e424d87e5990d3ce9214d6b374677d6630bba07注意--quiet模式下输出的是完整 64 位 IDoutputContainers 中使用%-64s格式化保证 ID 唯一性可直接用于buildah rm id。选项组合实战各选项可自由组合。例如只取不带头部的完整 ID 列表buildah containers -q --noheading --notruncateccf84de04b80c309ce6586997c79a769033dc4129db903c1882bc24a058438b8 45be1d806fc533fcfc2beee77e424d87e5990d3ce9214d6b374677d6630bba07再如按名称过滤并自定义输出buildah containers --filter nameubi8 --format {{.ContainerName}} ({{.ImageName}})源码级实现剖析工作容器从哪来buildah containers不含--all只列出 Buildah 自己的工作容器数据来源是 OpenAllBuilders调用store.Containers()读取本地容器存储中的所有容器对每个容器读取其数据目录中的状态文件stateFile并反序列化为Builder仅当状态文件可解析且容器类型为 Buildah 容器b.Type containerType时才纳入列表其他容器被跳过logrus.Debugf(...)记录后continue。因此Buildah 工作容器的判定依据是该容器数据目录下存在 Buildah 写入的状态文件而非名称前缀等外部特征。scratch 基础镜像的特殊处理对于buildah from scratch创建的空工作容器没有真实基础镜像其镜像名会被展示为scratch。该常量定义于 new.go// BaseImageFakeName is the name of a source image which we interpret // as no image. BaseImageFakeName imagebuilder.NoBaseImageSpecifier在 outputContainers 中当FromImageID为空时直接返回该占位名if id { return buildah.BaseImageFakeName }镜像名的推断outputContainers维护了一个seenImages缓存对于容器记录的基础镜像 ID通过store.Image(id)查询镜像对象并取第一个名称img.Names[0]作为展示名避免重复查询见 imageNameForID。测试验证仓库的 Bats 集成测试 tests/containers.bats 覆盖了该命令的主要行为可作为实际使用时的行为契约参考基本列出创建 alpine 与 busybox 两个工作容器后buildah containers输出共 3 行1 行表头 2 行数据filterbuildah containers --filter namecid只输出 2 行表头 1 个匹配容器format--format {{.ContainerName}}输出两行分别为alpine-working-container与busybox-working-container印证了默认命名规则json输出内容包含{验证 JSON 结构noheading--noheading输出不包含NAME表头quiet--quiet每行都是 64 位十六进制 ID^[0-9a-f]{64}$notruncate--notruncate输出完整 64 位 IDall在存储中额外用podman create创建一个非 Buildah 容器后buildah containers仍输出 2 行而buildah containers -a输出 3 行——精确验证了--all的行为差异。典型使用场景构建现场排查执行buildah bud后想确认当前有哪些活跃的工作容器直接运行buildah containers查看。批量清理配合buildah rm一键删除全部工作容器buildah rm $(buildah containers -q)脚本集成用--json或--format输出结构化结果交由 CI/CD 脚本处理用-q --noheading --notruncate获取无装饰的完整 ID 列表。区分来源用-a查看存储中全部容器通过BUILDER列的*快速区分 Buildah 工作容器与其它容器如 Podman 创建的。关联阅读命令总览buildah(1) 手册命令实现源码cmd/buildah/containers.go工作容器加载逻辑buildah.go 中 OpenAllBuilders集成测试tests/containers.bats创建工作容器的基础命令buildah from对应 docs/buildah-from.1.md与buildah buddocs/buildah-bud.1赞分享云原生【免费下载链接】buildahA tool that facilitates building OCI images.项目地址https://gitcode.com/gh_mirrors/bu/buildah点击查看免费下载相关推荐ModelScope本地化部署方案构建安全可控的企业级AI推理平台ModelScope本地化部署方案构建安全可控的企业级AI推理平台 面对企业敏感数据上云的隐私风险与云端AI服务的不稳定连接ModelScope本地化部署方人工智能大模型微调模型评测预训练Buildah容器镜像导入导出性能优化大型镜像处理Buildah容器镜像导入导出性能优化大型镜像处理 在容器化部署流程中大型镜像的导入导出操作常常成为效率瓶颈。本文将系统介绍Buildah工具在处理GB级镜云原生Buildah终极指南容器镜像的tar文件导入导出操作详解Buildah终极指南容器镜像的tar文件导入导出操作详解 Buildah 是一款轻量级的容器镜像构建工具专注于创建符合OCI标准的容器镜像。对于开发者和系云原生上一篇百度网盘Mac版SVIP破解终极指南免费解锁高速下载通道下一篇res-downloader 快速上手视频号、抖音与 m3u8 资源捕获下载完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

使用 Amazon Rekognition DetectFaces 与 AWS SDK for JavaScript 估算人像年龄

使用 Amazon Rekognition DetectFaces 与 AWS SDK for JavaScript 估算人像年龄

示例工程教程后端 【免费下载链接】aws-doc-sdk-examples Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below. 项目地…

2026/9/25 10:18:08 阅读更多 →
Claude Code 接入 DeepSeek V4 API:本地 CLI 与远程服务器配置全流程

Claude Code 接入 DeepSeek V4 API:本地 CLI 与远程服务器配置全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 10:18:07 阅读更多 →
四类专业Editor工具的技术本质与选型指南

四类专业Editor工具的技术本质与选型指南

1. 项目概述:为什么“Editor”这个词在技术圈里总让人摸不着头脑?“Editor”这个词,表面看就是“编辑器”,但放在实际工作场景里,它根本不是个统一概念——它更像一个功能标签,贴在哪类工具上,就…

2026/9/25 10:17:07 阅读更多 →

最新新闻

北京空调维修师傅上门服务的正规商家推荐

北京空调维修师傅上门服务的正规商家推荐

扎根北京本土,做贴近日常需求的空调运维服务 说到空调出故障,不少北京的住户和商户都有过糟心的经历。 要么报修后等大半天师傅才上门,要么拆装操作不规范留下隐患,要么收费模糊不清,修完没多久同类故障又找上门。 对于…

2026/9/25 12:09:26 阅读更多 →
边缘AI如何赋能电机控制:PWM、PID与STM32工程实战

边缘AI如何赋能电机控制:PWM、PID与STM32工程实战

最近几个月我一直在调试一套电机控制方案,板子上STM32跑着PWM输出,旁边挂了一个小算力的边缘AI模块做振动和电流特征分析。刚开始我觉得这组合有点"杀鸡用牛刀",但几轮实验下来,发现边缘AI真正解决了传统控制链路里三个…

2026/9/25 12:09:26 阅读更多 →
GB/T27930充电通信协议CAN报文解析与故障诊断实战

GB/T27930充电通信协议CAN报文解析与故障诊断实战

1. 充电通信协议的整体认知与项目背景1.1 为什么现在还要啃GB/T27930-2015这块硬骨头做车载充电测试或者充电桩开发的朋友,对GB/T27930-2015这个名字一定不陌生。它是电动汽车非车载传导式充电机与电池管理系统之间的通信协议,说白了就是直流快充时&…

2026/9/25 12:09:26 阅读更多 →
OpenClaw-RL 源码阅读笔记(4):系统架构拆解与 TaoToken 配置骨架

OpenClaw-RL 源码阅读笔记(4):系统架构拆解与 TaoToken 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:09:26 阅读更多 →
claude code 设置默认 ultrcode 与 bypass 权限模式:TaoToken 统一 Key 接入的 config.toml 骨架

claude code 设置默认 ultrcode 与 bypass 权限模式:TaoToken 统一 Key 接入的 config.toml 骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:09:26 阅读更多 →
Protractor 快速入门:安装、首个 E2E 测试与 Spec/Config 文件实战指南

Protractor 快速入门:安装、首个 E2E 测试与 Spec/Config 文件实战指南

测试 【免费下载链接】protractor E2E test framework for Angular apps 项目地址: https://gitcode.com/gh_mirrors/pr/protractor 点击查看 免费下载 Protractor 是面向 Angular(含 AngularJS)应用的端到端测试框架,基于 Node.…

2026/9/25 12:08:25 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →