Skip to content
Latchkey

Buildah対docker build:CIでイメージをビルドする

BuildahはデーモンなしでOCIイメージをビルドし、rootlessワークフローをサポートします。docker buildはBuildKit経由の普遍的なデフォルトです。

docker build(BuildKitに支えられています)はDockerfileからイメージをビルドする標準的な方法で、高度なキャッシングと幅広いツールサポートを備えます。BuildahはOCI/Dockerイメージをデーモンレスでビルドし、rootlessビルドをサポートし、Dockerfileからビルドでき、さらにスクリプト可能な段階的なイメージ構築も公開します。

Buildahdocker build
デーモンの要否不要必要(またはbuildkitd)
Rootless強力サポート
Dockerfileサポートあり(buildah bud)あり(ネイティブ)
スクリプトによるビルドあり(Dockerfile不要)Dockerfile駆動
CIエコシステムのサポート良好、デフォルトではない普遍的

CIにおいて

Buildahは、デーモンレスでrootlessのイメージビルドを望むときに魅力的です - 制限されたrunnerや、dockerdの実行が望ましくない場面で有用です。Dockerfileからビルドでき(buildah bud)、Dockerfileなしでスクリプトによるイメージ構築もできます。BuildKitを伴うdocker buildは普遍的なデフォルトで、最も滑らかなツールと最も文書化されたキャッシングパターンを備えます。rootless/デーモンレスのセキュリティにはBuildah(多くの場合Podmanと共に)が自然な選択であり、摩擦が最も少ないのはdocker buildです。

pipelineのための選択

rootless/デーモンレスのビルド、またはスクリプトによるイメージ構築を望むなら:Buildah。最も普遍的にサポートされ、よく文書化されたビルダーを望むなら:docker build(BuildKit)。どちらでもレイヤーcacheをregistryにプッシュすると、繰り返しのビルドが速くなります。

結論

rootless/デーモンレス、あるいはスクリプト駆動のイメージビルド:Buildah。普遍的なツールと最も滑らかなデフォルト:BuildKitを伴うdocker build。どちらでもレイヤーをregistryにcacheして再ビルドを避けましょう。

関連ガイド