Skip to content
Latchkey

Podman vs Buildah: CIでイメージをビルドするならどちらか?

Podmanはイメージもビルドする完全なコンテナエンジン。Buildahは各layerをより細かく制御できる、特化してスクリプト可能なイメージビルダーである。

Podmanは、Dockerに似たCLIでコンテナを実行、管理、ビルドする。BuildahはOCIイメージのビルドに特化する - Dockerfileをサポートするが、daemonなしでイメージを作るためのスクリプト可能でステップバイステップのAPIも公開する。実はPodmanはビルドに内部でBuildahを使う。

PodmanBuildah
スコープ実行 + 管理 + ビルドイメージのビルドのみ
Dockerfileサポートありあり
スクリプトによるlayer制御限定的きめ細かい (buildahコマンド)
daemonなしありあり
最適な用途一般的なコンテナworkflowカスタムなイメージビルドロジック

CIにおいて

Dockerfileからビルドし、かつコンテナも実行したいだけなら、Podmanがすべてを網羅する。Buildahは、イメージ構築のスクリプト可能できめ細かな制御が欲しいときに輝く - Dockerfileを書かずに、シェルスクリプトからlayerをマウント、commit、構成する。多くのパイプラインはworkflowにPodman、高度なカスタムビルドにのみBuildahを使う。

高速化する

どちらを選ぶかにかかわらず、ビルド間でbase layerをcacheして再利用する。両者はCI runnerで同じように動く。高速なマネージドrunnerがイメージのビルド時間を短縮する。

結論

コンテナの実行とビルドに1つのツールが欲しい: Podman。Dockerfileを超えたきめ細かくスクリプト可能なイメージ構築が欲しい: Buildah。両者は互いを補完する - PodmanはBuildah経由でビルドする。

関連ガイド