Red Hat Training

A Red Hat training course is available for RHEL 8

18.9. Podman コンテナー内でのコンテナーのビルド

Podman を使用してコンテナー内でコンテナーを実行できます。この例では、Podman を使用してコンテナーから別のコンテナーをビルドし、実行する方法を示しています。コンテナーは、簡単なテキストベースのゲーム Moon-buggy を実行します。

前提条件

  • container-tools モジュールがインストールされている。
  • registry.redhat.io レジストリーにログインしている。

    # podman login registry.redhat.io

手順

  1. registry.redhat.io/rhel8/podman イメージをベースとするコンテナーを実行します。

    # podman run --privileged --name podman_container -it \
      registry.redhat.io/rhel8/podman /bin/bash
    • registry.access.redhat.com/rhel8/podman イメージに基づいて、privileged_podman という名前の外部コンテナーを実行します。
    • --it オプションは、コンテナー内で対話式 bash シェルを実行します。
    • --privileged オプションは、コンテナーをホストから分離するセキュリティー機能を無効にします。
  2. podman_container コンテナー内に Containerfile を作成します。

    # vi Containerfile
    FROM registry.access.redhat.com/ubi8/ubi
    RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    RUN yum -y install moon-buggy && yum clean all
    CMD ["/usr/bin/moon-buggy"]

    Containerfile のコマンドで以下の build コマンドが実行されます。

    • registry.access.redhat.com/ubi8/ubi イメージからコンテナーをビルドします。
    • epel-release-latest-8.noarch.rpm パッケージをインストールします。
    • moon-buggy パッケージをインストールします。
    • コンテナーコマンドを設定します。
  3. Containerfile を使用して moon-buggy という名前の新しいコンテナーイメージをビルドします。

    # podman build -t moon-buggy .
  4. 必要に応じて、すべてのイメージをリスト表示します。

    # podman images
    REPOSITORY                  TAG      IMAGE ID      CREATED        SIZE
    localhost/moon-buggy  latest  c97c58abb564  13 seconds ago  1.67 GB
    registry.access.redhat.com/ubi8/ubi latest 4199acc83c6a  132seconds ago 213 MB
  5. moon-buggy コンテナーに基づいて新しいコンテナーを実行します。

    # podman run -it --name moon moon-buggy
  6. 必要に応じて、moon-buggy イメージをタグ付けします。

    # podman tag moon-buggy registry.example.com/moon-buggy
  7. 必要に応じて、moon-buggy イメージをレジストリーにプッシュします。

    # podman push registry.example.com/moon-buggy