第12章 コンテナーのプロビジョニング
コンテナー化とは、複数の分離したユーザースペースのインスタンスを提供するためにオペレーティングシステムのカーネルを使用する仮想化メソッドです。Docker とは、Linux コンテナー内のアプリケーションのデプロイメントを自動化するオープンソースプロジェクトであり、アプリケーションとその実行時の依存関係をコンテナーにパッケージ化する機能を提供します。Linux コンテナーは、セキュリティーを強化しつつ、迅速なアプリケーションのデプロイメントを可能にし、テスト、メンテナンスおよびトラブルシューティングを単純化します。
Red Hat Enterprise Linux Atomic Host は、Linux コンテナーの実行のために最適化された安全、軽量で、フットプリントを最小限に抑えたオペレーティングシステムです。Red Hat Satellite 6 は、Red Hat Enterprise Linux Atomic Host および他の Docker ベースのサーバーに接続する機能を提供します。これには、イメージからの新規コンテナーの作成が含まれます。本章では、接続を ACME の Red Hat Enterprise Linux Atomic Host に追加し、コンテナーをプロビジョニングします。
12.1. コンテナープロビジョニングの要件定義
Red Hat Enterprise Linux Atomic Host のプロビジョニングの要件には、以下が含まれます。
Docker レジストリーなどのイメージのソース。Red Hat Satellite 6 はコンテナーイメージの 3 つのソースを使用します。
- Satellite Server のアプリケーションライフサイクルの一部である同期した Docker イメージ。
- Docker ハブからのパブリックイメージ。
- Red Hat のコンテナーイメージのレジストリーを含む他の外部レジストリー。これは、「外部レジストリーの Satellite Server への追加」 で説明されています。
12.2. Red Hat Enterprise Linux Atomic Host の設定
Atomic Host では Satellite に追加する前に一部の設定が必要になります。これには、Docker API の Satellite Server への公開が含まれます。
Atomic Host にログインし、/etc/sysconfig/docker
ファイルを編集します。
$ vi /etc/sysconfig/docker
OPTIONS
パラメーターを見つけ、API を公開するように編集します。
OPTIONS='--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375'
接続にポート 2375 または 2376 のいずれかを使用します。Satellite Server には、これらのポートへのアクセスを可能にする特殊な SELinux ルールが含まれるためです。他のポートを使用すると、認証が失敗します。
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
docker
サービスを再起動します。
$ systemctl restart docker
ポートが公開されていること確認します。
$ netstat -tulnp | grep 2375
12.3. Atomic Host 接続の Satellite Server への追加
このプロセスでは、Satellite Server のコンピュートリソースで Red Hat Enterprise Linux Atomic 接続を追加します。
Web UI を使用する場合
インフラストラクチャー > コンピュートリソース に移動し、新規のコンピュートリソース をクリックします。UI には、コンピュートリソースの一連のフィールドがあります。
-
名前: リソースのテキスト形式の名前。例:
ACME's Atomic
-
プロバイダー: コンピュートリソースプロバイダーを選択するためのフィールド。
Docker
を選択すると、新規のフィールドのセットが表示されます。 -
説明: リソースのテキスト形式の説明。例:
ACME's Atomic Host at atomic.example.com
-
URL: Atomic Host の Docker API をポイントする URL。例:
http://atomic.example.com:2375
- ユーザー名、パスワード、Email (電子メール): Docker ハブの認証の詳細。Satellite Server はこれらの詳細を使用して、Atomic Host に Docker ハブからイメージをダウンロードさせます。これらの詳細は、パブリックイメージまたは Satellite Server で管理されているイメージを使用している場合は不要です。
ロケーション および 組織 タブは現在のコンテキストに自動的に設定されます。他のコンテキストをこれらのタブに追加します。
送信 をクリックして Red Hat OpenStack Platform の接続を保存します。
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'
12.4. 外部レジストリーの Satellite Server への追加
Red Hat Satellite 6 コンテンツ管理ガイド では、Red Hat Satellite 6 でコンテンツビューを使って Docker イメージを同期し、それらを管理する方法を説明しています。ただし、外部レジストリーへのアクセスのみが必要で、コンテンツを同期する必要がないケースもあります。Red Hat Satellite 6 は外部 Docker レジストリーを追加する機能を提供します。
Web UI を使用する場合
コンテナー > レジストリー に移動し、新規レジストリー (New Registry) をクリックします。UI には、新規レジストリーの一連のフィールドが表示されます。
-
名前: レジストリーのテキスト形式の名前。例:
Red Hat
-
URL: レジストリーの場所。例:
https://registry.access.redhat.com
-
説明: レジストリーのテキスト形式の説明。例:
Red Hat Docker Image Registry
- ユーザー名 および パスワード: プライベートレジストリーの認証の詳細。
ロケーション および 組織 タブは現在のコンテキストに自動的に設定されます。他のコンテキストをこれらのタブに追加します。
送信 をクリックして外部レジストリーを保存します。
CLI を使用する場合
hammer docker registry create
コマンドを使用してレジストリーを作成します。
# hammer docker registry create --name "Red Hat" --url "https://registry.access.redhat.com" --description "Red Hat Docker Image Registry"
12.5. Satellite Server でのコンテナーの作成
コンテナーのプロビジョニングプロセスは、標準のホスト作成プロセスとは異なります。コンテナーの作成は、ホスト > 新規ホスト メニューからではなく、コンテナー > 新規コンテナー オプションを使用します。
Web UI を使用する場合
コンテナー > 新規コンテナー に移動します。UI には、コンテナーの作成ウィザードが表示されます。
- Preliminary (事前)
このセクションでは、使用する Atomic Host とプロビジョニングコンテキストを定義します。
- Docker コンピュートリソースを選択します。例: "ACME’s Atomic"
-
プロビジョニングコンテキスト (組織 および ロケーション) は現在のコンテキストに自動的に設定されます。例:
ACME
およびNew York
- イメージ
このセクションでは、以下の 3 つの方法を含むイメージの選択方法が提供されます。
- コンテンツビュー: Satellite Server のアプリケーションライフサイクルからイメージを選択します。ライフサイクル環境、コンテンツビュー、リポジトリー、Docker タグ および Docker コンテンツを含む Capsule Server を選択します。
- Docker ハブ: Docker ハブでの Docker イメージの検索機能を提供します。検索 キーワードを入力し、虫眼鏡アイコンをクリックすると、イメージの一覧が表示されます。イメージを選択し、イメージの タグ を選択します。
- 外部レジストリー: 外部 Docker レジストリーでの Docker イメージの検索機能を提供します。検索 キーワードを入力し、虫眼鏡アイコンをクリックすると、イメージの一覧が表示されます。イメージを選択し、イメージの タグ を選択します。
- 設定
このセクションでは、コンテナーの初期設定を提供します。
基本オプション:
- コンテナーの 名前 を入力します。
- コンテナーで実行する コマンド を入力します。
-
エントリーポイント を入力します。デフォルトは
/bin/sh -c
です。
コンピュートオプション:
- 個別の CPU を割り当てる CPU セット を入力します。
- コンテナー化されたタスクで利用できる CPU 時間のシェアを設定する CPU シェア を入力します。
- コンテナーのメモリー使用の割り当てに使用する メモリー の容量を入力します。
- 環境
このセクションでは、コンテナーの実行時に使用する Atomic Host の設定を提供します。
-
環境変数: 環境変数のセットを定義できます。例:
LANG=en_US.UTF-8
- Exposed Ports (公開されたポート): コンテナーでポートを開きます。たとえば、ポート 22 のコンテナーへの SSH 通信を開きます。
- DNS: コンテナーの DNS サーバーを入力します。
- Run? (実行しますか?): 作成後にコンテナーを実行するかどうかを選択します。
-
シェル: TTY コンソールおよび標準ストリームを含むシェルのオプションを提供します (
STDIN
、STDOUT
、およびSTDERR
)。
-
環境変数: 環境変数のセットを定義できます。例:
ウィザードですべてのオプションを完了した後に、送信 をクリックします。
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"
次に Docker ハブからプロビジョニングを実行します。
# 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" --registry-id 1 --repository-name "rhel" --tag latest --name "docker-test3 --command bash --organizations "ACME" --locations "New York"
これにより、選択されたイメージから新規コンテナーが作成され、選択された Red Hat Enterprise Linux Atomic Host で実行されます。
12.6. 章の概要
本章では、Red Hat Enterprise Linux Atomic Host を追加し、管理するよう Red Hat Satellite 6 を設定する方法と Atomic Host でコンテナーをプロビジョニングする方法を説明しました。
ここまでで、本書のすべてのプロビジョニングシナリオを扱いました。13章プロビジョニングの最終設定 でプロビジョニングについての最終メモを参照してください。