第 19 章 使用 Buildah 构建容器镜像
Buildah 有助于构建符合 OCI 运行时规范 的 OCI 容器镜像。使用 Buildah,您可以创建一个可运行的容器,可以从头开始,也可以使用一个镜像作为起点。您可以使用 Containerfile
中的说明从工作容器创建镜像,或使用 Containerfile
中发现的模拟命令的一系列 Buildah 命令。
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 中编写容器构建脚本。