第13章 コンテナーイメージの管理

Red Hat Satellite 6 では、さまざまなソースからコンテナーイメージをインポートして、コンテンツビューを使用して外部コンテナーに分散できます。

コンテナーに関する情報は、「Red Hat Enterprise Linux Atomic Host 7Getting Started with Containers」を参照してください。

13.1. コンテナーイメージのインポート

Red Hat レジストリーまたは他のイメージレジストリーからコンテナーイメージリポジトリーをインポートできます。

以下の手順では、リポジトリー検出を使用して、コンテナーイメージを検索し、リポジトリーとしてインポートします。手動での製品とリポジトリーの作成方法は、6章カスタムコンテンツのインポートを参照してください。

手順

コンテナーイメージリポジトリーをインポートして、製品を作成するか、製品と関連付けるには、以下の手順を実行します。

  1. Satellite Web UI で コンテンツ > 製品 に移動して、リポジトリーの作成 をクリックします。
  2. リポジトリータイプ リストから コンテナーイメージ を選択します。
  3. 検出するレジストリー フィールドには、イメージのインポート元となるレジストリーの URL を入力します。
  4. レジストリーのユーザー名 フィールドには、コンテナーのイメージレジストリーのユーザ名に対応する名前を入力します。
  5. レジストリーのパスワード フィールドには、入力したユーザ名に対応するパスワードを入力します。
  6. レジストリー検索パラメーター フィールドには、検索の絞り込みに使用する検索条件を入力して、検出 をクリックします。
  7. オプション: 検出されたリポジトリー リストをさらに絞り込むには、フィルター フィールドに、使用する追加の検索条件を入力します。
  8. 検出されたリポジトリー リストからインポートするリポジトリーを選択して、選択項目の作成 クリックします。
  9. オプション: 製品 リストから製品を作成するには、新しい製品 を選択します。
  10. 名前 フィールドに製品名を入力します。
  11. オプション: リポジトリー名リポジトリーラベル のコラムで、リポジトリー名とラベルを編集できます。
  12. リポジトリー作成の実行 をクリックします。
  13. リポジトリーの作成が完了したら、各新規リポジトリーをクリックして詳細情報を確認できます。
  14. オプション: リポジトリーにインポートするコンテンツをフィルタリングするには、リポジトリーをクリックして、同期タグの制限 に移動します。これをクリックし、Satellite への同期コンテンツを制限するタグを編集または追加します。
  15. コンテンツ > 製品 に移動し、製品名を選択します。
  16. 新規リポジトリーを選択し、同期開始 をクリックして同期プロセスを開始します。

同期の進捗状況を表示するには、コンテンツ > 同期の状態 に移動して、リポジトリーツリーを展開します。

同期が完了したら、コンテナーイメージのマニフェスト をクリックして利用可能なマニフェストを一覧表示します。また、必要のなくなったマニフェストは、このリストから削除できます。

CLI をご利用の場合

  1. カスタムの Red Hat Container Catalog 製品を作成します。

    # hammer product create \
    --name "Red Hat Container Catalog" \
    --sync-plan "Example Plan" \
    --description "Red Hat Container Catalog content" \
    --organization "My_Organization"
  2. コンテナーイメージ用のリポジトリーを作成します。

    # hammer repository create \
    --name "RHEL7" \
    --content-type "docker" \
    --url "http://registry.access.redhat.com/" \
    --docker-upstream-name "rhel7" \
    --product "Red Hat Container Catalog" \
    --organization "My_Organization"
  3. リポジトリーを同期します。

    # hammer repository synchronize \
    --name "RHEL7" \
    --product "Red Hat Container Catalog" \
    --organization "My_Organization"

13.2. コンテナー名のパターンの管理

Satellite を使用してコンテナーの作成や管理を行う場合には、コンテナーはコンテンツビューのバージョン間や異なるステージの Satellite ライフサイクル環境間を移動するので、コンテナー名はステージごとに変化します。たとえば、アップストリームのリポジトリーから、ssh 名を使用してコンテナーイメージを同期する場合には、そのイメージを Satellite 製品と組織に追加してコンテンツビューの一部として公開する時に、コンテナーイメージは my_organization_production-custom_spin-my_product-custom_ssh という名前になる可能性があります。これが原因で、コンテナーイメージをプルする時に問題が発生する可能性があります。理由は、コンテナーレジストリーに、コンテナー名のインスタンスが 1 つしか含まれていない可能性があるためです。Satellite の命名規則の問題を回避するには、デフォルト名を上書きするようにレジストリー名のパターンを設定して、コンテナー名が後で使用するときに明確になるようにします。

制限事項

レジストリー名のパターンを使用してコンテナーの命名規則を管理する場合には、レジストリーの命名パターンが理由でグローバル一意名を生成する必要があるので、命名時に競合の問題が発生する可能性があります。以下の例を示します。

  • repository.docker_upstream_name のレジストリー名パターンを設定した場合に、Production ライフサイクルと同じリポジトリー名のコンテナーコンテンツが含まれるコンテンツビューを公開またはプロモートできません。
  • lifecycle_environment.name のレジストリー名パターンを設定した場合には、同じ名前を指定して 2 つ目のコンテナーリポジトリーを作成することができません。

コンテナーに対してレジストリーの命名パターンを定義する場合には、注意を払って進めて行く必要があります。

手順

レジストリー名パターンで、コンテナーの命名を管理するには、以下の手順を実行します。

  1. Satellite Web UI で、コンテンツ > ライフサイクル環境 に移動して、ライフサイクル環境を作成するか、編集するライフサイクル環境を選択します。
  2. コンテナーイメージのレジストリー エリアで、レジストリー名のパターン の右側にある編集アイコンをクリックします。
  3. 変数一覧と例を使用して、必要とされるレジストリー名のパターンを判断します。
  4. レジストリー名のパターン フィールドに、使用するレジストリー名のパターンを入力します。たとえば、repository.docker_upstream_name を使用するには、以下を入力します。

    <%= repository.docker_upstream_name %>
  5. 保存 をクリックします。

13.3. コンテナーレジストリーの認証管理

デフォルトでは、Satellite のコンテナーイメージにアクセスするには認証が必要です。

ライフサイクル環境の Satellite イメージレジストリーに含まれるコンテナーイメージにアクセスするのにユーザーの認証をするかどうかを指定できます。たとえば、認証要件なしに Production ライフサイクルからコンテナーイメージにアクセスできるようにしたり、認証済みのユーザーだけに Development および QA 環境へのアクセスを制限したりすることもできます。

手順

Satellite からコンテナーイメージにアクセスするための認証設定を管理するには、以下の手順を実行します。

  1. Satellite Web UI で、コンテンツ > ライフサイクル環境 に移動して、認証管理するライフサイクル環境を選択します。
  2. このライフサイクル環境に認証なしでアクセスできるようにするには、非認証のプル のチェックボックスを選択します。認証なしのアクセスを制限するには、非認証のプル チェックボックスのチェックを外します。
  3. 保存 をクリックします。