第6章 Buildah でコンテナーイメージの構築

buildah コマンドを使用すると、作業中コンテナー、Dockerfile、または scratch コンテナーから、コンテナーイメージを作成できます。作成されたイメージは OCI に準拠しているため、「OCI Runtime Specification」 (Docker、CRI-O など) を満たす任意のコンテナーランタイムで動作します。

このセクションでは、buildah コマンドを使用して、コンテナーおよびコンテナーイメージを作成し、作業する方法を説明します。

6.1. Buildah について

Buildah を使用することは、以下の点で、docker コマンドでイメージを作成するのと異なります。

  • デーモンは使用されない - Docker デーモンが無効になります。したがって、Buildah を使用する場合に、コンテナーランタイム (Docker、CRI-O など) が必要ありません。
  • ベースイメージまたは scratch- 別のコンテナーに基づいてイメージを構築するだけでなく、空のイメージ (scratch) で開始することもできます。
  • 外部のビルドツール -イメージ自体にはビルドツールが含まれません。その結果、Buildah は以下のようになります。

    • 構築するイメージのサイズは小さくなります。
    • 作成されるイメージに、コンテナーを構築するのに使用されるソフトウェア (gcc、make、yum など) がなく、イメージの安全性が高まります。
    • イメージの転送に必要なリソースが少ないイメージを作成します (サイズが小さくなるため)。

Buildah は、データを個別に保存し、イメージを構築するだけでなく、そのイメージをコンテナーとして実行することで、Docker やその他のコンテナーランタイムを使用せずに動作させることができます。デフォルトでは、Buildah は、イメージを、containers-storage (/var/lib/containers) のように識別される領域に保存します。

注記

buildah コマンドがデフォルトで使用するコンテナーの保管場所は、CRI-O コンテナーエンジンが、イメージのローカルコピーを保存するのに使用する場所と同じになります。そのため、CRI-O または Buildah で、もしくは buildah コマンドでレジストリーから取得したイメージは、同じディレクトリー構造に保存されます。ただし、現在、CRI-O および Buildah は、イメージを共有することはできますが、コンテナーを共有することはできません。

buildah コマンドと一緒に使用するオプションが多数あります。buildah コマンドで可能な主なアクティビティーには、以下のことが含まれます。

  • Dockerfile からコンテナーを構築 - Dockerfile を使用して新規コンテナーイメージ (buildah bud) を構築します。
  • 別のイメージまたは scratch イメージにコンテナーを構築 - 既存のベースイメージ (<imagename> から buildah) または新規 (scratch の buildah) から、scratch コンテナーを構築します。
  • コンテナーまたはイメージの検証 - コンテナーまたはイメージ (buildah inspect) に関連付けられているメタデータを表示します。
  • コンテナーのマウント - コンテナーの root ファイルシステムをマウントして、このコンテンツを追加または変更します (buildah mount)。
  • 新しいコンテナーレイヤーの作成 - コンテナーの root ファイルシステムで更新された内容をファイルシステムレイヤーとして使用して、コンテンツを新しいイメージにコミット (buildah commit) します。
  • コンテナーのアンマウント - マウントされたコンテナーのマウントを解除します (buildah umount)。
  • コンテナーまたはイメージの削除 - コンテナー (buildah rm) またはコンテナーイメージ (buildah rmi) を削除します。

Buildah の詳細は、GitHub Buildah のページ を参照してください。GitHub Buildah サイトには、man ページと、RHEL バージョンで利用できるよりも新しい可能性があるソフトウェアが含まれています。以下は、Buildah に関するその他の記事です。

6.1.1. Buildah のインストール

buildah パッケージは、RHEL 8 の container-tools モジュールで利用できます (yum module install container-tools)。buildah パッケージを個別にインストールするには、以下のコマンドを実行します。

# yum -y install buildah

buildah パッケージをインストールすると、buildah パッケージに含まれている man ページで、その使用方法の詳細を確認できます。利用可能な man ページとその他のドキュメントを表示して、man ページを開くには、以下のコマンドを入力します。

# rpm -qd buildah
# man buildah
buildah(1)         General Commands Manual         buildah(1)

NAME
 Buildah - A command line tool that facilitates building OCI container images.
...

次のセクションでは、buildah を使用してコンテナーを取得し、Dockerfile または scratch からコンテナーを構築し、さまざまな方法でコンテナを管理する方法を説明します。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。