第11章 コンテナーのプロビジョニング
Red Hat Satellite 6 では、オンプレミスレジストリーを作成して複数のソースからイメージをインポートし、コンテンツビューを使用してこれらのイメージをコンテナーに配信することができます。Satellite Server は、コンテナー実行用のサーバーとして機能する 1 つ以上の Docker コンピュートリソースの作成をサポートします。
イメージのインポート、このイメージをベースにしたコンテナーの起動、コンテナーのアクティビティーの監視、さらに伝搬可能な新規イメージ階層への状態のコミットが可能です。
コンテナーに関する情報は、Red Hat Enterprise Linux Atomic Host 7 の 「Getting Started with Containers」 ガイドを参照してください。
コンテナーイメージのインポートやこれらのイメージを使用したコンテナーの作成については、この章をご利用ください。
11.1. コンテナープロビジョニングの要件 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux Atomic Host を使用してコンテナーをプロビジョニングする前に、コンテナーレジストリーなど、イメージのソースが必要です。
Red Hat Satellite 6 はコンテナーイメージの 3 つのソースを使用します。
- Satellite Server のアプリケーションライフサイクルの一部である、同期済みの Docker 形式のコンテナーイメージ。
- Docker Hub からのパブリックイメージ。
- Red Hat のコンテナーイメージのレジストリーを含む他の外部レジストリー。これは、「Satellite Server への外部レジストリーの追加」 で説明されています。
11.2. コンテナーイメージのインポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Container Catalog または Satellite に接続する他のイメージレジストリーからコンテナーイメージをインポートできます。
コンテナーイメージのインポートは、以下の手順を実行します。
- Red Hat Container Catalog 用のカスタム製品を作成します。
- Red Hat Container Catalog registry (http://registry.access.redhat.com/) または Satellite のサードパーティーのレジストリーなど、使用するコンテナーカタログにリンクするリポジトリーを追加します。
- レジストリーのリポジトリーと同期します。
Red Hat container Catalog のカスタム製品を作成して、イメージリポジトリーを作成するには、以下の手順を実行します。
- Satellite Web UI で コンテンツ > 製品 に移動して、新製品 をクリックします。
- 名前 フィールドには、製品名を入力します。
- 対象の製品の追加情報を入力し、選択します。
- 保存 をクリックして製品を作成します。
- リポジトリーの作成 をクリックします。
- 名前 フィールドには、リポジトリーの名前を入力します。
- ラベル フィールドには、リポジトリーの内部 ID を入力します。
-
タイプ の一覧から
docker
を選択します。 -
URL フィールドには、ソースとして使用するレジストリーの URL を入力します。
https://registry.hub.docker.com/
やhttps://registry.hub.docker.com
など、使用する別のソースの URL などが例として挙げられます。 - アップストリームのリポジトリー名 フィールドには、リポジトリーの名前を入力します。
- 保存 をクリックして、リポジトリーを作成し、Satellite のリポジトリーリストで表示します。
- 新規リポジトリーを選択して、同期開始 をクリックして同期プロセスを開始します。
Web UI で同期の進捗状況を表示するには、コンテンツ > 同期の状態 に移動して、リポジトリーツリーを展開します。
同期が完了したら、Docker マニフェストの管理 をクリックして利用可能なマニフェストを一覧表示します。また、必要のなくなったマニフェストは、このリストから削除できます。
CLI を使用する場合
カスタムの
Red Hat Container Catalog
製品を作成します。hammer product create \ --name "Red Hat Container Catalog" \ --sync-plan "Example Plan" \ --description "Red Hat Container Catalog content" \ --organization "ACME"
# hammer product create \ --name "Red Hat Container Catalog" \ --sync-plan "Example Plan" \ --description "Red Hat Container Catalog content" \ --organization "ACME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーイメージ用のリポジトリーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リポジトリーを同期します。
hammer repository synchronize \ --name "RHEL7" \ --product "Red Hat Container Catalog" \ --organization "ACME"
# hammer repository synchronize \ --name "RHEL7" \ --product "Red Hat Container Catalog" \ --organization "ACME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.3. Satellite Server への外部レジストリーの追加 リンクのコピーリンクがクリップボードにコピーされました!
外部レジストリーのイメージからコンテナーを作成する場合は、先に Satellite にレジストリーを追加する必要があります。
外部のコンテナーレジストリーを追加するには、以下の手順を行います。
- Satellite Web UI で、コンテナー > レジストリー に移動して、レジストリーの作成 をクリックします。
- 名前 フィールドには、レジストリーの名前を入力します。
-
URL フィールドには、
https://registry.access.redhat.com
などのレジストリーの場所を入力します。 - オプション: 説明 フィールドには、レジストリーエントリーの説明を入力します。
- ユーザー名 フィールドにには、レジストリーのユーザーアカウントに対応するユーザ名を入力します。
- パスワード フィールドには、レジストリーのユーザーアカウントに対するパスワードを入力します。
- ロケーション タブで、ロケーションを選択します。
- 組織 タブで、組織を選択します。
- 送信 をクリックして外部レジストリーを保存します。
CLI を使用する場合
hammer docker registry create
コマンドを使用してレジストリーを作成します。
hammer docker registry create --name "Red Hat" \ --url "https://registry.access.redhat.com" \ --description "Red Hat Container Image Registry" \ --organization "Default_Organization" \ --location "Default_Location"
# hammer docker registry create --name "Red Hat" \
--url "https://registry.access.redhat.com" \
--description "Red Hat Container Image Registry" \
--organization "Default_Organization" \
--location "Default_Location"
11.4. Satellite でのコンテナーイメージの管理 リンクのコピーリンクがクリップボードにコピーされました!
コンテンツビューでコンテナーイメージを管理するには、以下の手順を行います。
- Satellite web UI で コンテンツ > コンテンツビュー に移動して、 新規ビューの作成 をクリックします。
-
名前 フィールドには、
コンテナー
を入力します。これにより、自動的に ラベル フィールドにデータが投入されます。 -
説明 フィールドには、
Container image for Red Hat Enterprise Linux 7
など、説明を入力します。 - 複合コンテンツビューを使用して他のコンテンツビューを使用する場合には、複合ビュー のチェックボックスを選択します。
- オプション: 複合コンテンツビュー を選択する場合は、新しいバージョンの複合コンテンツビューが作成された場合に、複合ビューを自動公開するかどうかを選択します。
- 保存 をクリックして、コンテンツビューを作成します。
- Docker コンテンツ のサブタブに移動して、追加 をクリックします。
- Red Hat Enterprise Linux 7 Server iイメージのコンテナーリポジトリーを選択します。
- リポジトリーの追加 をクリックします。
- バージョン に移動して、新規バージョンの公開 をクリックします。
バージョンの 説明 を入力します。わかりやすい説明を入力しておくことで、新しいコンテンツバージョンの記録をするのに役立ちます。
Satellite Server がビューの新バージョンを作成し、ライブラリー環境に公開します。
プロモート をクリックして、アプリケーションライフサイクルの環境でこのコンテンツビューをプロモートすることもできます。
CLI を使用する場合
リポジトリー ID 一覧を取得します。
hammer repository list --organization "ACME"
# hammer repository list --organization "ACME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテンツビューを作成して、リポジトリーを追加します。
hammer content-view create \ --name "Containers" \ --description "Container image for Red Hat Enterprise Linux 7" \ --repository-ids 8 \ --organization "ACME"
# hammer content-view create \ --name "Containers" \ --description "Container image for Red Hat Enterprise Linux 7" \ --repository-ids 8 \ --organization "ACME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ビューを公開します。
hammer content-view publish \ --name "Containers" \ --description "Initial Content View for our container image" \ --organization "ACME"
# hammer content-view publish \ --name "Containers" \ --description "Initial Content View for our container image" \ --organization "ACME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. Red Hat Enterprise Linux Atomic Host の設定 リンクのコピーリンクがクリップボードにコピーされました!
Docker 形式のコンテナー向けの Red Hat API を Satellite Server に公開するなど、Satellite に接続する前に Atomic Host を設定します。コンテナーに関する情報は、Red Hat Enterprise Linux Atomic Host 7 の 『Getting Started with Containers』ガイドを参照してください。
Atomic Host にログインし、
/etc/sysconfig/docker
ファイルを編集します。vi /etc/sysconfig/docker
$ vi /etc/sysconfig/docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OPTIONS
パラメーターを見つけ、API を公開するように編集します。OPTIONS=--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
OPTIONS=--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ポート 2375 または 2376 のいずれかを使用して接続します。Satellite Server には、これらのポートへのアクセスを許可する特定の SELinux ルールが含まれます。別のポートを使用すると、認証が失敗してしまいます。
ポート 2375 のファイアウォールを開放します。
firewall-cmd --add-port=2375/tcp firewall-cmd --add-port=2375/tcp --permanent
# firewall-cmd --add-port=2375/tcp # firewall-cmd --add-port=2375/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Satellite Server 証明書をインポートします。
curl http://satellite.example.com/pub/katello-server-ca.crt \ -o /etc/pki/ca-trust/source/anchors/katello-server-ca.crt update-ca-trust
$ curl http://satellite.example.com/pub/katello-server-ca.crt \ -o /etc/pki/ca-trust/source/anchors/katello-server-ca.crt $ update-ca-trust
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker
サービスを再起動します。systemctl restart docker
# systemctl restart docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.6. Satellite Server への Atomic Host 接続の追加 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Server のコンピュートリソースに Red Hat Enterprise Linux Atomic 接続を追加するには、以下の手順を行います。
- Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースの作成 をクリックします。
- 名前 フィールドに、リソースの名前を入力します。
- プロバイダー の一覧から Docker を選択します。
- オプション: 説明 フィールドには、リソースの説明を追加できます。
- ロケーション タブで、使用するロケーションを選択します。
- 組織 タブで、使用する組織を選択します。
- 送信 をクリックして保存します。
CLI を使用する場合
hammer compute-resource create
コマンドで接続を作成します。
hammer compute-resource create --provider docker \ --name "ACME's Atomic" --url "http://atomic.example.com:2375" \ --organizations 'Default Organization' --locations 'Default Location'
# hammer compute-resource create --provider docker \
--name "ACME's Atomic" --url "http://atomic.example.com:2375" \
--organizations 'Default Organization' --locations 'Default Location'
11.7. コンテナーの作成 リンクのコピーリンクがクリップボードにコピーされました!
この手順を使用して Satellite にコンテナーを作成します。Satellite Web UI には、作成プロセスを順を追って進めるウィザードが含まれています。外部レジストリー、コンテンツビュー、Docker Hub から、Satellite に追加するコンテナーイメージを選択できます。
- Satellite web UI で、コンテナー > コンテナーの作成 に移動します。
- デプロイ先 リストから、使用するコンピュートリソースを選択します。
- ロケーション タブで、ロケーションを選択します。
- 組織 タブで、組織を選択します。
- 次の手順 をクリックします。
コンテナーを作成する方法には 3 つのオプションがあります。
- コンテンツビューのコンテナーイメージからの作成
- Docker Hub のコンテナーイメージからの作成
- 外部レジストリーのコンテナーイメージからの作成
コンテンツビューからのコンテナーの作成
- ライフサイクル環境 リストから、使用するライフサイクル環境を選択します。
- コンテンツビュー リストから、使用するコンテナーイメージを選択します。
- レジストリー リストから、使用するレジストリーを選択します。
- タグ リストから、使用するタグを選択します。
- Capsule リストから、使用する Capsule を選択します。
- 次の手順 をクリックします。
Docker Hub からのコンテナーの作成
- Docker Hub タブを選択して、検索 フィールドに、使用する Docker コンテナーを入力します。
- タグ フィールドには、使用するコンテナーイメージタグの名前を入力し、イメージの検索 をクリックします。
- 使用するコンテナーイメージを選択して、次の手順 をクリックします。
外部レジストリーからのコンテナーの作成
- レジストリー リストから、使用するレジストリーを選択します。
- 検索 フィールドには、使用するコンテナーイメージの名前を入力します。
- タグ フィールドには、使用するコンテナーイメージに関連付けられたタグを入力します。
- イメージの検索 をクリックして使用するイメージを選択し、次の手順 をクリックします。
コンテナー作成プロセスの完了
- 名前 フィールドには、新規コンテナーの名前を入力します。
- command フィールドには、コンテナーで実行するコマンドを入力します。
-
エントリーポイント フィールドには、コンテナーの起動時に自動的にコンテナーが実行するコマンドを入力します。デフォルトのエントリーポイントは、
/bin/sh -c
です。 - コンピュートオプション タブを選択します。
- CPU セット フィールドで、コンテナーに CPU を割り当てます。たとえば、0-2,16 は CPU 0、1、2 および 16 を表します。
- CPU シェア フィールドでは、コンテナーの CPU シェアを割り当てます。これにより、コンテナー化されたタスクに提供される CPU 時間のシェアが設定されます。
- メモリー フィールドには、コンテナーに割り当てるメモリーサイズを入力します。
- 次の手順 をクリックします。
-
環境変数 フィールドには、
LANG=en_US.UTF-8
などの環境変数セットを定義します。 - 公開されたポート (Exposed Ports) フィールドには、コンテナーで開くポートの番号を入力します。たとえば、コンテナーへの SSH 通信は、ポート 22 を開きます。
- DNS フィールドには、コンテナーの DNS サーバーを入力します。
- 実行 のチェックボックスを選択して、作成後に自動的にコンテナーを起動します。
- 送信 をクリックして、コンテナーを作成します。
CLI を使用する場合
以下では、hammer docker container create
コマンドの例を 3 つ紹介しています。
コンテンツビューからコンテナーを作成します。
hammer docker container create --compute-resource "ACME's Atomic" \ --repository-name "rhel7" --tag "latest" --name "docker-test1" \ --command "bash" --organizations "ACME" --locations "New York"
# hammer docker container create --compute-resource "ACME's Atomic" \ --repository-name "rhel7" --tag "latest" --name "docker-test1" \ --command "bash" --organizations "ACME" --locations "New York"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に Docker Hub からプロビジョニングします。
hammer docker container create --compute-resource "ACME's Atomic" \ --repository-name "docker.io/fedora" --tag latest \ --name "docker-test2" --command bash --organizations "ACME" \ --locations "New York"
# hammer docker container create --compute-resource "ACME's Atomic" \ --repository-name "docker.io/fedora" --tag latest \ --name "docker-test2" --command bash --organizations "ACME" \ --locations "New York"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 外部レジストリーからプロビジョニングします。
hammer docker container create --compute-resource "ACME's Atomic" \ --registry-id 1 --repository-name "rhel" --tag latest \ --name "docker-test3 --command bash --organizations "ACME" \ --locations "New York"
# hammer docker container create --compute-resource "ACME's Atomic" \ --registry-id 1 --repository-name "rhel" --tag latest \ --name "docker-test3 --command bash --organizations "ACME" \ --locations "New York"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.8. コンテナーの起動、コミット、削除 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーの起動または停止
コンテナーの作成時には、デフォルトの状態は無効となっています。コンテナーを有効化して、コンピュートリソースでコンテナー化されたアプリケーションのプロセスを開始します。ホストは、Web アプリケーションの場合と同様にコンテナーと通信できます。
- Satellite web UI で、コンテナー > すべてのコンテナー に移動します。
- 既存のコンテナーリストから、任意のコンテナーを選択し、電源オン をクリックします。コンテナーを停止するには、電源オフ をクリックします。
コンテナーのコミット
イメージからコンテナーを起動すると、書き込み可能な階層がこのイメージの上層に追加されます。コンテナーをコミットすると、コンテナーのステータスを保存するイメージ階層が作成されます。コンテナーをコミットするたびに、変更を保存するために新しいイメージ階層が追加されます。たとえば、コンテナーが Docker Hub からプルしたイメージをもとにしている場合には、コミットされた変更は Docker Hub にプッシュし直されます。
- Satellite web UI で、コンテナー > すべてのコンテナー に移動します。
- 既存のコンテナーリストから、任意のコンテナーを選択し、コミット をクリックします。
-
user/my-rhel-image
などのリポジトリー名を入力します。 - タグをイメージに割り当てます。
- 連絡先情報を入力します。
- コミットについて分かりやすいコメントを入力します。
- 送信 をクリックします。
コンテナーの削除
- Satellite web UI で、コンテナー > すべてのコンテナー に移動します。
- 既存のコンテナーリストから、任意のコンテナーを選択し、削除 をクリックします。
- 警告ウィンドウで OK をクリックして削除を確定します。