第19章 Buildah でコンテナーイメージの構築
Buildah は、OCI Runtime Specification を満たす OCI コンテナーイメージの構築を容易にします。Buildah を使用すると、作業コンテナーをゼロから作成することも、イメージを開始点として使用して作成することも可能です。イメージは、Containerfile
内の指示を使用して作業コンテナーから作成するか、Containerfile
内のコマンドをエミュレートする一連の Buildah コマンドを使用して作成できます。
19.1. Buildah ツール
Buildah は、Open Container Initiative (OCI) コンテナーイメージと、そのイメージから作業コンテナーを作成するためのコマンドラインツールです。Buildah を使用すると、さまざまな方法でコンテナーとコンテナーイメージを作成できます。
- コンテナーイメージをゼロから作成する
-
buildah from scrap
コマンドを使用すると、最小限のコンテナーイメージをゼロから作成できます。最小限のコンテナーイメージには、不要なファイルや依存関係を含めないようにする、セキュリティーを強化する、パフォーマンスを最適化するなどの利点があります。詳細は、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
などのビルドツールが含まれていません。そのため、イメージのセキュリティーが強化され、イメージの転送が容易になります。 - 互換性
-
Buildah は Containerfile を使用したコンテナーイメージのビルドをサポートしているため、Docker から Buildah に簡単に移行できます。
Containerfile
内でも、Dockerfile
内と同じコマンドを使用できます。 - 対話形式のイメージビルド
- コンテナーに対する変更を作成してコミットし、対話形式で段階的にイメージをビルドできます。
- シンプルなイメージ作成
-
Buildah を使用すると、
rootfs
を作成したり、JSON ファイルを生成したり、OCI 準拠のイメージをビルドしたりできます。 - 柔軟性
- Bash で直接コンテナービルドをスクリプト化できます。