Red Hat Training

A Red Hat training course is available for Red Hat Satellite

第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 and New 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 コンソールおよび標準ストリームを含むシェルのオプションを提供します (STDINSTDOUT、および 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章プロビジョニングの最終設定 でプロビジョニングについての最終メモを参照してください。