5.4. コンテナーのビルド


Buildah または podman build を使用して、新しいコンテナーイメージを作成します。Containerfile 内でイメージに関する指示を定義することで、ソフトウェアのインストールと設定を自動化できます。

前提条件

  1. container-tools メタパッケージがインストールされている。

手順

  1. コンテナーツールのインストール: ご使用の RHEL システムに必要なコンテナーツールがインストールされていることを確認します。container-tools モジュールは、Buildah、Podman、Skopeo を提供します。

    $ sudo dnf install container-tools
  2. 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"]
  3. Buildah を使用してコンテナーイメージをビルドします。コンテナーファイルを含むディレクトリーに移動した後、buildah bud (または podman build) を使用してイメージをビルドします。

    $ cd /<path_to_container_file>
    
    $ buildah bud -t your_image_name:tag .
    • your_image_name: イメージの名前。
    • タグ: イメージに付けるタグ (例:latest、1.0)。
    • .: Containerfile がカレントディレクトリーにあることを示します。
  4. コンテナーの実行: イメージをビルドした後、podman run コマンドを使用して、そのイメージからコンテナーを実行できます。

    $ podman run -d -p 8080:80 my-web-app
    • -d: コンテナーをデタッチモード (バックグラウンド) で実行します。
    • -p 8080:80: ホスト上のポート 8080 をコンテナー内のポート 80 にマッピングします。
    • my-web-app: 実行するイメージの名前。

      コンテナービルドにおける heredocs 構文

      BuildKit を有効にしておけば、Red Hat Enterprise Linux ベースイメージを使用した Containerfile 内で heredoc 構文を使用できます。コマンドに heredoc 構文が含まれている場合、Containerfile は、heredoc の区切り文字のみを含む行が現れるまでの後続の行を、同じコマンドの一部とみなします。Containerfile では、heredoc を使用して、RUNCOPY などの命令内に複数行の文字列を直接埋め込むことができます。これは RHEL ベースのイメージで特に役立ちます。単純なタスク用に個別のスクリプトファイルを作成する必要がなくなり、可読性と保守性が向上するためです。

      たとえば、一般的な使用例として、単一の RUN 命令内で複数のシェルコマンドを実行して単一のイメージレイヤーを作成し、&& \ 構文の使用を回避する例が挙げられます。

# syntax=container/containerfile:1.4
FROM registry.redhat.io/ubi10/ubi-minimal
# Use a heredoc to perform a multi-line RUN command:
RUN <<EOF
microdnf -y update
microdnf -y install nginx
microdnf clean all
echo "Nginx installed and packages updated"
EOF
  • RUN <<EOF: << は heredocs の開始点を示すものです。EOF はユーザー定義の区切り文字です。
  • <<EOF と最後の EOF の間の行は、シェルによって実行される単一のスクリプトとして扱われます。
  • ブロック全体が単一の RUN 命令であるため、より効率的で読みやすくなります。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る