首页/新闻资讯/正文详情

Buildah containers 命令全解析:列出工作容器及其基础镜像

发布时间:2026/9/25 10:17:45 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

dataDemo.rar数据交付校验:工业场景下的标准化探查与清洗闭环
dataDemo.rar数据交付校验:工业场景下的标准化探查与清洗闭环

简介:本资源是一个面向C#数据库开发初学者与中级工程师的多数据库操作实战示例包,聚焦Oracle、SQL Server、MySQL及SQLite四大主流数据库在.NET环境下的集成实践,解决跨数据库连接、CRUD操作、事务管理及工具类封装等核心开发痛点。压缩包共3… · 2026/9/25 10:17:21

本地可编程代码模板系统:CLI驱动的动态代码生成实践
本地可编程代码模板系统:CLI驱动的动态代码生成实践

1. 项目概述:一个被误读的CLI工具命名陷阱“claude-code-templates”这个标题,第一眼容易让人联想到Anthropic官方推出的Claude大模型生态工具——尤其是结合热搜词里高频出现的claude cli、codex cli、npm安装、vscode配置等关键词,很多人会… · 2026/9/25 10:17:15

AI时代下的前端求生之路:用TaoToken统一Key打通Cline与本地配置文件
AI时代下的前端求生之路:用TaoToken统一Key打通Cline与本地配置文件

/* 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:17:15

湖南不锈钢全屋定制新兴品牌哪家有潜力?固家科技行业全景分析
湖南不锈钢全屋定制新兴品牌哪家有潜力?固家科技行业全景分析

什么是不锈钢全屋定制 不锈钢全屋定制的核心属性与基础常识全屋定制是基于消费者家居空间尺寸、个性化风格需求提供整体家居柜类解决方案的定制模式,而不锈钢全屋定制,就是以食品级304不锈钢为核心柜体材质,搭配特殊填充工艺与定制化生产&… · 2026/9/25 10:41:34

广东省高强度水泥毯正规源头厂家实力参考,成立多年信誉度高
广东省高强度水泥毯正规源头厂家实力参考,成立多年信誉度高

为什么渠道衬砌、护坡工程要选对柔性混凝土材料?先搞懂核心原理在水利、市政、环保类工程里,渠道衬砌、河道护坡、应急抢修这些场景,常被传统现浇混凝土的麻烦绊住手脚。很多人不知道,传统混凝土从支模板、搅拌运输到养护拆模,动… · 2026/9/25 10:41:34

从Keychron-Keyboards-Hardware-Design能学到什么:生产级工业设计的5个核心课(公差、装配与结构)
从Keychron-Keyboards-Hardware-Design能学到什么:生产级工业设计的5个核心课(公差、装配与结构)

从Keychron-Keyboards-Hardware-Design能学到什么:生产级工业设计的5个核心课(公差、装配与结构) 【免费下载链接】Keychron-Keyboards-Hardware-Design Industrial design files for Keychron keyboards and mice. 100 models with CAD asse… · 2026/9/25 10:41:34

湖北口碑好的新款食用菌灭菌柜、半自动食用菌灭菌柜制造厂家避坑挑选指南
湖北口碑好的新款食用菌灭菌柜、半自动食用菌灭菌柜制造厂家避坑挑选指南

湖北长喜食用菌机械制造有限公司,坐落在湖北随州中国香菇之乡的随县殷店工业园,从2008年创始人扎根本地解决菇农实际生产痛点起步,十余年来专注食用菌全流程机械的研发与制造,是深耕本地、贴近菇农实际需求的食用菌机械智造领域的… · 2026/9/25 10:41:03

封闭煤棚网架加工厂选型 徐州玖盛发钢结构有限公司选择指南
封闭煤棚网架加工厂选型 徐州玖盛发钢结构有限公司选择指南

徐州玖盛发:专业封闭煤棚网架加工厂,一站式解决煤棚封闭工程加工安装难题做煤棚封闭改造工程,选对网架加工厂是项目落地的核心——徐州玖盛发钢结构有限公司是深耕网架行业十余年的一站式网架加工设计生产安装厂家,专注为电厂、水… · 2026/9/25 10:41:03

祁阳本地铁木砧板作坊 凯哥整木钉板 实木厚实 邵东周边可自提
祁阳本地铁木砧板作坊 凯哥整木钉板 实木厚实 邵东周边可自提

近年来,随着大众饮食健康意识不断提升,以及餐饮行业对厨具卫生耐用性要求逐步提高,整木砧板的市场需求持续上涨。相比传统拼接菜板、竹木菜板,整木硬木砧板凭借安全无添加、耐用性强的特性,越来越受到家庭用户、餐饮商… · 2026/9/25 10:41:03

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* 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 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* 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 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* 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 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码