第 19 章 使用 Buildah 构建容器镜像
Buildah 有助于构建符合 OCI 运行时规范 的 OCI 容器镜像。使用 Buildah,您可以创建一个可运行的容器,可以从头开始,也可以使用一个镜像作为起点。您可以使用 Containerfile 中的说明从工作容器创建镜像,或使用一系列 Buildah 命令来模拟 Containerfile 中的命令。
19.1. Buildah 工具 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Buildah 是一个命令行工具,用来创建 Open Container Initiative (OCI)容器镜像以及来自镜像的工作容器。使用 Buildah,您可以以不同的方式创建容器和容器镜像:
- 从头开始的容器镜像
-
您可以使用
buildah from scratch命令从头开始创建最小容器镜像。最小容器镜像具有以下优点:避免包括任何不必要的文件或依赖项,增强安全性并优化性能。如需更多信息,请参阅 使用 Buildah 从头开始创建镜像。 - 来自容器镜像的容器
-
您可以使用
buildah from <image>命令从容器镜像创建一个工作的容器。然后,您可以使用buildah mount和buildah copy命令修改容器。如需更多信息,请参阅 通过 Buildah 使用容器。 - 来自现有容器的容器镜像
-
您可以使用
bulidah commit命令创建一个新的容器镜像。另外,您可以使用buildah push命令将新创建的容器镜像推送到容器注册中心。如需更多信息,请参阅 通过 Buildah 使用容器。 - 来自 Containerfile 中的指令的容器镜像
-
您可以使用
buildah build或buildah bud命令从Containerfile中的指令构建容器镜像。如需更多信息,请参阅 使用 Buildah 从 Containerfile 中构建镜像。
使用 Buildah 与使用 docker 命令构建镜像的不同之处在于:
- 无守护进程
- Buildah 不需要容器运行时守护进程。
- 基础镜像或空镜像
- 您可以基于另一个容器构建镜像,或使用空镜像从零开始。
- 镜像大小减少了
-
Buildah 镜像不包括构建工具,如
gcc、make和dnf。因此,镜像更安全,您可以更轻松地传输镜像。 - 兼容性
-
您可以轻松地从 Docker 迁移到 Buildah,因为 Buildah 支持使用 Containerfile 构建容器镜像。您可以在
Containerfile中使用与Dockerfile中相同的命令。 - 交互式镜像构建
- 您可以通过创建并提交对容器的更改,以交互方式构建镜像。
- 简化的镜像创建
-
您可以创建
rootfs,生成 JSON 文件,并使用 Buildah 构建 OCI 兼容镜像。 - 灵活性
- 您可以直接在 Bash 中编写容器构建脚本。