5.4. コンテナーのビルド
Buildah は、Red Hat Enterprise Linux でコンテナーを構築するための主要なツールであり、Podman と併用して構築したコンテナーを管理および実行できます。
前提条件
-
container-toolsメタパッケージがインストールされている。
手順
コンテナーツールのインストール: RHEL システムに必要なコンテナーツールがインストールされていることを確認します。container-tools モジュールは、Buildah、Podman、Skopeo を提供します。
sudo dnf install container-tools
$ sudo dnf install container-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Containerfile を作成する: Containerfile は、コンテナーイメージをビルドするための手順を定義します。このファイルは、ベースイメージ、インストールするソフトウェア、適用する設定、実行するアプリケーションを指定します。以下に例を示します。
FROM registry.redhat.io/ubi10/ubi-minimal RUN microdnf -y update && microdnf -y install COPY index.html /var/www/html/ EXPOSE 80 CMD ["httpd", "-DFOREGROUND"]
FROM registry.redhat.io/ubi10/ubi-minimal RUN microdnf -y update && microdnf -y install COPY index.html /var/www/html/ EXPOSE 80 CMD ["httpd", "-DFOREGROUND"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Buildah を使用してコンテナーイメージをビルドします。コンテナーファイルを含むディレクトリーに移動した後、
buildah bud(またはpodman build) を使用してイメージをビルドします。cd /<path_to_container_file> buildah bud -t your_image_name:tag .
$ cd /<path_to_container_file> $ buildah bud -t your_image_name:tag .Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
your_image_name: イメージの名前。 -
tag: イメージのタグ (例: latest、1.0)。 -
.: Containerfile がカレントディレクトリーにあることを示します。
-
コンテナーを実行する: イメージをビルドした後、
podman runコマンドを使用してそこからコンテナーを実行できます。podman run -d -p 8080:80 my-web-app
$ podman run -d -p 8080:80 my-web-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
-d: コンテナーをデタッチモード (バックグラウンド) で実行します。 -
-p 8080:80: ホスト上のポート 8080 をコンテナー内のポート 80 にマッピングします。 my-web- アプリケーション: 実行するイメージの名前。- コンテナー構築におけるヒアドキュメント構文
Red Hat Enterprise Linux ベースイメージでは、Containerfile で
heredoc構文を使用して、BuildKit を確実に有効にすることができます。コマンドにヒアドキュメント構文が含まれている場合、Containerfile は、行にヒアドキュメント区切り文字のみが含まれるまで、次の行を同じコマンドの一部と見なします。heredocsを使用すると、Containerfile 内のRUNやCOPYなどの命令内に複数行の文字列を直接埋め込むことができます。これは、単純なタスク用に個別のスクリプトファイルを作成する必要がなくなり、読みやすさと保守性が向上するため、RHEL ベースのイメージで特に役立ちます。たとえば、一般的な使用例では、
&& \構文を回避して、単一のRUN命令で複数のシェルコマンドを実行して単一のイメージレイヤーを作成します。
-
-
RUN <<EOF:<<はヒアドキュメントの開始を示すもので、EOFはユーザー定義の区切り文字です。 -
<<EOFと最後のEOFの間の行は、シェルによって実行される単一のスクリプトとして扱われます。 -
ブロック全体が単一の
RUN命令であるため、より効率的で読みやすくなります。