第 19 章 使用 Buildah 构建容器镜像
Buildah 有助于构建符合 OCI 运行时规范 的 OCI 容器镜像。使用 Buildah,您可以创建一个可运行的容器,可以从头开始,也可以使用一个镜像作为起点。您可以使用 Containerfile
中的说明从工作容器创建镜像,或使用一系列 Buildah 命令来模拟 Containerfile
中的命令。
19.1. Buildah 工具
使用 Buildah 与使用 docker 命令构建镜像的不同之处在于:
- 无守护进程
- Buildah 不需要容器运行时。
- 基础镜像或空镜像
- 您可以基于另一个容器构建镜像,或者从一个空镜像(scratch)开始。
- 构建工具是外部的
Buildah 不包含镜像本身内的构建工具。因此,Buildah:
- 减少构建的镜像的大小。
- 通过从生成的镜像中排除软件(如 gcc、make 和 dnf)来提高镜像的安全性。
- 由于镜像大小减少了,所以允许使用较少的资源传输镜像。
- 兼容性
- Buildah 支持使用 Dockerfile 构建容器镜像,从而可以轻松地从 Docker 迁移到 Buildah。
注意
Buildah 用于容器存储的默认位置与 CRI-O 容器引擎用于存储镜像本地副本的位置相同。因此,通过 CRI-O 或 Buildah 从注册表拉取的镜像或由 buildah 命令提交的镜像以同样的目录结构存储。但是,即使 CRI-O 和 Buildah 当前能够共享镜像,它们也无法共享容器。