第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 のプロビジョニングの要件には、以下が含まれます。
コンテナーレジストリーなどのイメージのソース。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 向け Red Hat 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. Satellite Server への Atomic Host 接続の追加
このプロセスでは、Satellite Server のコンピュートリソースで Red Hat Enterprise Linux Atomic 接続を追加します。
Web UI を使用する場合
インフラストラクチャー > コンピュートリソース に移動し、新規のコンピュートリソース をクリックします。UI には、コンピュートリソースの一連のフィールドがあります。
-
名前: リソースのテキスト形式の名前。例:
ACME's Atomic
-
プロバイダー: コンピュートリソースプロバイダーを選択するためのフィールド。
Docker
を選択すると、新規のフィールドのセットが表示されます。 -
説明: リソースのテキスト形式の説明。例:
ACME's Atomic Host at atomic.example.com
-
Atomic Host で Docker の Red Hat API をポイントする URL。例:
http://atomic.example.com:2375
- ユーザー名、パスワード、Email (電子メール) - コンテナーレジストリーに関する認証の詳細。Satellite Server は、Atomic ホストがコンテナーレジストリーからイメージをダウンロードするようにこれらの詳細を使用します。パブリックイメージまたは 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 でコンテンツビューを使って Docker 形式のコンテナーイメージを同期し、それらを管理する方法を説明しています。ただし、外部レジストリーへのアクセスのみが必要で、コンテンツを同期する必要がないケースもあります。Red Hat Satellite 6 は外部コンテナーレジストリーを追加する機能を提供します。
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 とプロビジョニングコンテキストを定義します。
- コンテナーイメージのコンピュートリソースを選択します。例: "ACME’s Atomic"
-
プロビジョニングコンテキスト (組織 および ロケーション) は現在のコンテキストに自動的に設定されます。例:
ACME
andNew York
- イメージ
このセクションでは、以下の 3 つの方法を含むイメージの選択方法が提供されます。
- コンテンツビュー: Satellite Server のアプリケーションライフサイクルからイメージを選択します。ライフサイクル環境、コンテンツビュー、リポジトリー、Docker タグ および Docker コンテンツを含む Capsule Server を選択します。
- 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章プロビジョニングの最終設定 でプロビジョニングについての最終メモを参照してください。