第2章 コンテナーの管理
本章では、コンテナーの管理方法を説明します。コンテナーのコンテンツを設定する方法は 『コンテンツ管理ガイド』の「コンテナーイメージの管理」を参照してください。
2.1. コンテナーホストの準備
前提条件
Red Hat Satellite では、コンテナーを Docker プロバイダータイプのコンピュートリソースにのみデプロイできます。そのため、コンテナーの表示または作成を初めて試みる時に、Satellite によって、Docker コンピュートリソースの作成を求めるプロンプトが出されます。これを行うには、コンテナーホストを作成し、このホストをコンピュートリソースとして指定します。
コンテナーホストの準備
Red Hat カスタマーポータルの 『コンテナーの使用ガイド』ガイドの「RHEL 7 における Docker の取得」で説明している通り、イメージをホストする Red Hat Enterprise Linux 7 サーバーを準備し、このサーバーで docker サービスを有効にします。コンテナーホストは、Satellite Server と同じマシンにデプロイすることも、独立してデプロイすることもできます。
注記現在、Red Hat Enterprise Linux 7 はコンテナーホストにサポートされる唯一のシステムです。
docker
パッケージは rhel-7-server-extras-rpms リポジトリーで利用できます。Red Hat Enterprise Linux 6 システムは、現在のところコンテナーをホストするシステムとしてサポートされていません。コンテナーホストで、以下のコマンドを実行して、Satellite Server の CA 証明書をインストールします。
rpm -Uvh https://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
ここで、satellite.example.com は Satellite Server の完全修飾ドメイン名です。コンテナーホストが Satellite ホストとしてすでに登録されている場合はこの手順を省略します。
コンテナーホストの場所に応じて、以下のタスクを実行します。
コンテナーホストが Satellite Server と同じマシンにある場合には、以下を実行します。
docker ユーザーグループを作成し、foreman ユーザーをそのグループに追加します。
# groupadd docker # usermod -aG docker foreman
/etc/sysconfig/docker ファイルで、OPTIONS 変数を以下のように修正します。
OPTIONS='--selinux-enabled -G docker'
影響を受けるサービスを再起動して変更を適用します。
# systemctl restart docker.service # katello-service restart
コンテナーホストが Satellite Server とは異なるマシンにある場合は、以下を実行します。
コンテナーホストのポートを開き、Satellite Server と通信します。/etc/sysconfig/docker ファイルの OPTIONS 変数を以下のように修正します。
OPTIONS='--selinux-enabled -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
TLS が有効な場合はポート
2376
を使用できます。以下のように docker サービスを再開し、設定を検証します。
# systemctl restart docker.service # systemctl status docker.service
Docker コンピュートリソースの作成
- ポート 5000 が Satellite Server で有効になっていることを確認します。コンテナーホストは、このポートを使用して Satellite Server のコンテンツビューからイメージをプルします。
『プロビジョニングガイド』の「Atomic Host 接続の Satellite Server への追加」 の説明通りに、コンピュートリソースを作成します。コンテナーホストのロケーションに従って、リソースの URL を指定します。
- コンテナーホストが Satellite Server と同じマシンにある場合は、unix://var/run/docker.sock をリソース URL として設定します。
コンテナーホストが Satellite Server とは異なるマシンにある場合は、以下の形式で URL を指定します。
http://container_host_fqdn:2375
ここで、container_host_fqdn はコンテナーホストの完全修飾ドメイン名を表し、Satellite との通信用にコンテナーホストで開くポート番号は
2375
(TLS を使用している場合は2376
) にできます。- テスト接続 をクリックして、コンテナーホストが利用できるかどうかをテストします。
- 送信 をクリックして、コンピュートリソースを作成します。
2.2. コンテナーの作成
Satellite に Docker コンピュートリソースが 1 つ以上あると、コンテナーを作成することができます。新しいコンテナーを作成する方法は「コンテナーの作成」に記載される手順に従ってください。既存コンテナーをモニターする方法は「コンテナーのモニター」を参照してください。
コンテナーを作成するには、まずイメージをインポートする必要があります。イメージは、プラットフォームイメージまたは先に作成したレイヤー化したイメージである場合があります。Satellite は以下のイメージソースをサポートします。
-
ローカルコンテンツ: コンテナーの作成時に
コンテンツビュー
オプションによって表されます。このオプションを使用すると、一部のコンテンツビューおよびライフサイクル環境で Capsule Server にすでに存在するリポジトリーからイメージをインポートできます。ローカルレジストリーを作成し、これにデータを設定する方法は『コンテンツ管理ガイド』の「Red Hat Container Catalog からのコンテナーイメージのインポート」を参照してください。 - Docker ハブ: Docker ハブレジストリーを検索して、そこからイメージをプルできます。検証済みのコンテンツを含む、信頼されたイメージのみをプルするようにしてください。
- 外部レジストリー: 先に作成した外部レジストリーからイメージをインポートできます。レジストリーを Red Hat Satellite で作成する方法は『コンテンツ管理ガイド』の「他のイメージレジストリーからのコンテナーイメージのインポート」を参照してください。
既存コンテナーの設定を変更することはできません。設定を変更するには「コンテナーの作成」の説明に従って、変更した設定を含む交換用のコンテナーを作成する必要があります。そのため、実際のワークフローでコンテナーが交換可能であることを確認してください。
コンテナーの作成
- コンテナー > 新規コンテナー に移動するか、コンテナー > すべてのコンテナー に移動して 新規コンテナーをクリックします。
コンテナー作成の 準備 段階で、以下の設定を行います。
- コンピュートリソース タブの Deployed on ドロップダウンメニューで、コンピュートリソースを選択します。コンピュートリソースの詳細は『プロビジョニングガイド』の「プロビジョニングワークフローの定義」を参照してください。
- ロケーション タブで、新規コンテナーを利用可能にするロケーションを選択します。
組織 タブで、新規コンテナーを利用可能にする組織を選択します。
次へ をクリックして、先に進みます。
コンテナー作成の イメージ 段階では、コンテナーのベースとして機能するイメージをインポートします。これは、プラットフォームイメージの場合も、先に作成したレイヤー化されたイメージである場合もあります。以下のいずれかのオプションから選択してください。
- コンテンツビュー タブを選択して、ライフサイクル環境からイメージをインポートします。ライフサイクル環境、コンテンツビュー、リポジトリー、タグ、および Capsule Server を指定します。
- Docker ハブ タブを選択し、Docker ハブレジストリーからイメージをインポートします。検索 フィールドにイメージ名を入力すると、Satellite はコンピュートリソースを自動的に検索します。眼鏡のアイコンをクリックして Docker ハブを検索します。検索結果の一覧からイメージを選択し、ドロップダウンリストからタグを選択します。
外部レジストリー タブを選択し、既存のレジストリーからイメージをインポートします。ドロップダウンメニューからレジストリーを選択し、イメージ名でこれを検索します。Satellite は タグ フィールドに、選択したイメージ名に使用できるタグを設定します。詳細は『コンテンツ管理ガイド』の「他のイメージレジストリーからのコンテナーイメージのインポート」を参照してください。
次へ をクリックして、先に進みます。
コンテナー作成の 設定 段階では、以下のパラメーターを設定します。
- コンテナー名を指定します。
- コンテナー内で実行するコマンドを指定します。
-
コンテナーが起動するとすぐに実行するコマンドのエントリーポイントを指定します。デフォルトのエントリーポイントは
/bin/sh -c
です。 -
CPU をコンテナーに割り当てます。たとえば、
0-2,16
は CPU 0、1、2、および 16 を表します。 - コンテナーに使用できる CPU 時間の相対的配分を定義します。
コンテナーのメモリー制限を指定します。たとえば、
512m
と指定すると、コンテナーのメモリー使用量が 512 MB に制限されます。次へ をクリックして、先に進みます。
- 環境 というコンテナー作成の最終段階では、pseudo-tty を割り当てる必要があるかどうかを選択し、STDIN、STDOUT、および STDERR をコンテナーに割り当てます。環境変数の追加 をクリックしてコンテナーのカスタム環境変数を作成します。実行しますか? チェックボックスを選択して、作成後のコンテナーを自動的に開始します。
- 送信 をクリックして、コンテナーを作成します。
コンテナーの作成後に、Satellite はコンテナーのメタデータの概要を表示します。デフォルトで、新規コンテナーは無効になっています (コンテナーの作成時に 実行しますか? チェックボックスを選択していない場合)。コンテナーの開始方法は「コンテナーの開始または停止」を参照してください。
例2.1 Satellite での Red Hat Enterprise Linux コンテナーの作成
Red Hat Enterprise Linux コンテナーを Red Hat Satellite で有効にするには、以下の操作を実行します。
- 『コンテンツ管理ガイド』の「Red Hat Container Catalog からのコンテナーイメージのインポート」に従ってカスタムレジストリーを作成します。registry.access.redhat.com をレジストリー URL として指定します。
- 「コンテナーの作成」に従って新規コンテナーを作成します。コンテナー作成の イメージ 段階で、外部レジストリー タブに移動し、直前の手順で作成されたレジストリーを選択します。検索フィールドを使用して Red Hat Enterprise Linux イメージの必要なバージョンを検索します。設定 および 環境 ステージに進み、コンテナーを完成します。
2.3. コンテナーのモニター
Red Hat Satellite では、コンテナーと、コンテナー内で実行するプロセスの状態をモニターすることができます。一部のコンテナーには managed (管理) というマークが付けられます。このマークは、そのコンテナーが Satellite 環境内で作成され、プロビジョニングされていることを意味します。
以下の手順では、選択した組織のコンテナーを一覧表示し、コンテナーのメタデータをモニターする方法を示します。
コンテナーの調査:
- コンテナー > すべてのコンテナー に移動します。
- コンテナー ページでは、すべての Docker コンピュートリソースに専用タブが付けられています。これらのタブのそれぞれには、各コンテナーの選択されたパラメーターと共に、利用可能なコンテナーの表が含まれています。検査するコンピュートリソースのタブを選択します。
- コンテナーのメタデータを表示するには、検査するコンテナーの名前をクリックします。Satellite ではコンテナーのプロパティーの表が表示されます。
- プロセス タブでは、コンテナーで現在実行しているプロセスを表示できます。プロセス名をクリックして、そのプロセスのメタデータを表示します。
- コンテナーが実行している場合、その標準出力を ログ タブで確認できます。コンテナーの作成時に pseudo-tty の割り当て チェックボックスを選択している場合、コンソールは対話的になります。そうでない場合は、コンテナーの開始時に生成される初期の標準出力が表示されます。
2.4. コンテナーの開始、コミット、および削除
デフォルトで新規コンテナーは無効になります。コンテナーを有効にして、コンピュートリソースでコンテナー化されたアプリケーションのプロセスを開始します。次にホストは、Web アプリケーションの場合と同様にコンテナーと通信できます。以下の手順では、コンテナーを開始し、停止する方法を示します。
コンテナーの開始または停止
- コンテナー > すべてのコンテナー に移動して、利用可能なコンテナーの一覧を表示します。
-
開始するコンテナーの横にある パワーオン をクリックします。コンテナーが開始するとボタンが パワーオフ に切り替わり、これをクリックするとコンテナーが停止します。これらの操作は
docker start
コマンドおよびdocker stop
コマンドと同等です。
以下の手順では、コンテナーをコミットしてコンテナーの状態を保存する新規のイメージレイヤーを作成します。
コンテナーのコミット
- コンテナー > すべてのコンテナー に移動して、利用可能なコンテナーの一覧を表示します。
- コミットするコンテナーの名前をクリックします。
コミット をクリックします。Satellite は、以下を行うプロンプトを表示します。
- リポジトリー名を指定します。これには 1 つの名前、または user/my-rhel-image などのようにユーザー名と組み合わせて指定できます。
- タグをイメージに割り当てます。
- 問い合わせ先情報を指定します。
- イメージ情報のコメントを入力します。
- 送信 をクリックします。
コンテナーは元のイメージのリポジトリーにコミットされます。たとえば、コンテナーが Docker ハブからプルされたイメージをベースにしている場合、コミットされた変更は Docker ハブに戻されます。
コンテナーの削除
- コンテナー > すべてのコンテナー に移動して、利用可能なコンテナーの一覧を表示します。
- 削除するコンテナーの名前をクリックします。
- 削除 をクリックします。
- 警告ボックスで、OK をクリックしてコンテナーを削除します。