Menu Close
Settings Close

Language and Page Formatting Options

13.9. Buildah でゼロからイメージを新規作成

ベースイメージから開始する代わりに、最低限のコンテナーメタデータのみを保持する新しいコンテナーを作成できます。

スクラッチコンテナーからイメージを作成するときは、次のことを考慮してください。

  • scratch イメージに依存関係のない実行ファイルをコピーして、最小コンテナーを機能させるため、いくつかの設定を行うことができます。
  • RPM データベースを初期化し、dnfrpm などのツールを使用するために、コンテナーにリリースパッケージを追加する必要があります。
  • パッケージを多数追加する場合は、scratch イメージではなく、標準の UBI イメージまたは最小 UBI イメージの使用を検討してください。

手順

この手順では、コンテナーに Web サービス httpd を追加し、これを実行するように設定します。

  1. 空のコンテナーを作成します。

    # buildah from scratch
    working-container
  2. working-container コンテナーをマウントし、マウントポイントパスを scratchmnt 変数に保存します。

    # scratchmnt=$(buildah mount working-container)
    
    
    # echo $scratchmnt
    /var/lib/containers/storage/overlay/be2eaecf9f74b6acfe4d0017dd5534fde06b2fa8de9ed875691f6ccc791c1836/merged
  3. scratch イメージで RPM データベースを初期化し、redhat-release パッケージを追加します。

    # dnf install -y --releasever=8 --installroot=$scratchmnt redhat-release
  4. httphttpd サービスを scratch ディレクトリーにインストールします。

    # dnf install -y --setopt=reposdir=/etc/yum.repos.d \ --installroot=$scratchmnt \ --setopt=cachedir=/var/cache/dnf httpd
  5. $scratchmnt/var/www/html/index.html ファイルを作成します。

    # mkdir -p $scratchmnt/var/www/html
    # echo "Your httpd container from scratch works!" > $scratchmnt/var/www/html/index.html
  6. コンテナーから直接 httpd デーモンを実行するように working-container を設定します。

    # buildah config --cmd "/usr/sbin/httpd -DFOREGROUND" working-container
    # buildah config --port 80/tcp working-container
    # buildah commit working-container localhost/myhttpd:latest

検証

  1. ローカルストレージ内のイメージを一覧表示します。

    # podman images
    REPOSITORY                                 TAG     IMAGE ID      CREATED         SIZE
    localhost/myhttpd                          latest  08da72792f60  2 minutes ago   121 MB
  2. localhost/myhttpd イメージを実行し、コンテナーとホストシステム間のポートマッピングを設定します。

    # podman run -p 8080:80 -d --name myhttpd 08da72792f60
  3. Web サーバーをテストします。

    # curl localhost:8080
    Your httpd container from scratch works!

関連情報

  • buildah-config の man ページ
  • buildah-commit の man ページ