Linux 命令速查
云原生 man buildah

buildah

无需 Docker daemon 构建 OCI 容器镜像的工具

返回

补充说明

buildah 命令 是红帽主导的容器构建工具,属于 containers 工具套件(与 podman、skopeo 配套)。它不需要运行 Docker daemon 或任何守护进程,直接在宿主机上通过内核特性构建 OCI 格式的容器镜像,适合在无 root 权限或轻量 CI 环境中使用。

buildah 支持两种构建方式:buildah bud(Build Using Dockerfile,与 docker build 对应)和 buildah build(后者的别名,新版默认命令);也支持通过 buildah from + buildah copy + buildah commit 以脚本方式逐层组装镜像。构建出的镜像可以配合 podman 运行,或用 buildah push 推送到 registry。

典型使用场景:在 CI/CD 流水线中构建镜像而不引入 Docker daemon;配合 podman 在同一主机上完成“构建-运行”一体化工作流;用 buildah unshare 在 rootless 模式下构建。注意事项:rootless 构建需要用户命名空间支持(如 Ubuntu 需开启 kernel.unprivileged_userns_clone);buildah bud 在新版本中逐渐统一为 buildah build。

语法

buildah [选项] 子命令 [参数]

选项

buildah build/bud 常用选项:
--build-arg=键=值   # 传入 Dockerfile 中 ARG 的环境变量
-f, --file=路径      # 指定 Dockerfile(默认找当前目录 Dockerfile)
-t, --tag=镜像名     # 指定镜像标签,可多次使用
--layers             # 使用缓存层加速增量构建
--no-cache           # 不使用构建缓存
--platform=平台       # 指定目标平台,如 linux/amd64

实例

# 用当前目录的 Dockerfile 构建镜像并打标签
buildah build -t myapp:v1 .

# 指定 Dockerfile 路径并传入构建参数
buildah bud -f Dockerfile.dev --build-arg=ENV=prod -t myapp:prod .

# 从基础镜像创建容器,复制文件后提交为新镜像
ctr=$(buildah from alpine:latest)
buildah copy "$ctr" ./app /app
buildah commit "$ctr" myapp:v2

# 查看镜像列表与删除镜像
buildah images
buildah rmi myapp:v1

# 推送镜像到 registry
buildah push myapp:v1 docker://registry.example.com/myapp:v1

参考链接