eDirectory DockerイメージのOSベースイメージはopenSUSE Leap 15.1です。iManagerイメージのtarファイルをDockerホストマシンにダウンロードし、次のコマンドを使用して、そのイメージをDockerのローカルレジストリにロードする必要があります。
# tar xf iManager_320.tar.gz # docker load --input iman320.tar
上記のコマンドでは、imanager:3.2.0という名前のDockerイメージがロードされます。
iManagerをデプロイする前に、次の推奨事項を考慮する必要があります。
Dockerコンテナには、デフォルトではリソースの制約がありません。そのため、すべてのコンテナには、ホストのカーネルによって提供されるすべてのCPUリソースおよびメモリリソースへのアクセスが提供されます。コンテナで使用できるリソースの量に制限を設定することにより、実行中の1つのコンテナによってより多くのリソースが消費され、実行中の他のコンテナがリソース不足になることがないようにする必要があります。
Docker runコマンドの--memoryフラグを使用して、Dockerコンテナで、コンテナによって使用されるメモリに対してハード制限が適用されるようにする必要があります。
Docker runコマンドの--cpuset-cpusフラグを使用して、Dockerコンテナで、実行中のコンテナによって使用されるCPUの容量に制限が適用されるようにする必要があります。
--pids-limitには300を設定して、任意の時点でコンテナ内で生成されるカーネルスレッドの数を制限する必要があります。これは、DoS攻撃を防ぐためです。
Docker runコマンドの--restartフラグを使用して、障害発生時のコンテナ再起動ポリシーを5に設定する必要があります。
通常、DockerコンテナではLinux機能のデフォルトリストが有効になっています。iManagerコンテナで次の機能のみが有効になっていることを確認し、その他の機能をドロップする必要があります。
AUDIT_WRIT
CHOWN
DAC_OVERRIDE
SETGID
SETUID
FOWNER
SYS_PTRACE (Linux ptraceを活用するユーティリティを使用する場合のみ。gdbなど)
機能の追加とドロップの詳細については、 「Runtime privilege and Linux capabilities」を参照してください。
iManager.envファイルは、iManagerコンテナ内の/etc/opt/novell/iManager/confにあります。パラメータのデフォルト値を含むサンプル環境設定ファイルを次に示します。
# Certificate Public Key Algorithm # Allowed Values: RSA, ECDSA256, ECDSA384 CERTIFICATE_ALGORITHM=RSA # Cipher Suite # Allowed Values: # For RSA - NONE, LOW, MEDIUM HIGH # For ECDSA256 - SUITEB128ONLY # For ECDSA384 - SUITEB128, SUITEB192 CIPHER_SUITE=NONE # Tomcat Server HTTP Port TOMCAT_HTTP_PORT=8080 # Tomcat Server SSL Port TOMCAT_SSL_PORT=8443 # iManager Authorized User (admin_name.container_name.tree_name) AUTHORIZED_USER=
上記のいずれかのパラメータに対してデフォルト以外の値を指定してiManagerコンテナを起動するには、このiManager.envファイルをDockerホストファイルシステムに作成し、 --volumeオプションを使用してそのファイルをiManagerコンテナ内のパス/etc/opt/novell/iManager/confにバインドおよびマウントしてください。次に例を示します。
docker run --name=iMan320 --volume /path/to/iManager.env:/etc/opt/novell/iManager/conf/iManager.env imanager:3.2.0
コンテナの起動後にパラメータを編集するには、/path/to/iManager.envファイルを編集して、コンテナを再起動します。実行中のコンテナの設定を変更するには、次の手順を実行します。
/path/to/iManager.envファイルを変更します。
docker restart iMan320を使用してコンテナを再起動します。
iManager Dockerコンテナでは、マルチホストのDocker環境にデプロイするためのホストおよびオーバーレイネットワークドライバがサポートされています。
ネットワーク上にデプロイされているeDirectoryサーバにアクセスするには、iManagerコンテナをホストネットワークドライバを使用して設定します。Dockerネットワークの詳細については、「Configure Networking」を参照してください。
次の例は、ホストネットワークドライバを使用してiManagerコンテナを設定する方法を示しています。
docker run -it --name=iMan320 --net=host --restart on-failure:5 --memory="1000M" --cpuset-cpus="2" --volume iManager-volume:/config --volume /path/to/iManager.env:/etc/opt/novell/iManager/conf/iManager.env imanager:3.2.0
メモ:
--net=hostフラグは、ホストネットワークドライバを使用してコンテナをデプロイするために使用します。
ホストネットワークにiManagerをデプロイする前にiManager-volumeを作成する必要があります。詳細については、iManagerデータストレージの管理を参照してください。
図 3-1 ホストネットワークでのiManagerコンテナのデプロイ
ユーザ定義のオーバーレイネットワークを使用して、複数のDockerデーモンホスト上で実行される、eDirectoryコンテナの分散ネットワークを作成できます。このオーバレイネットワークにデプロイされているiManagerコンテナを使用すると、これらのすべてのeDirectoryサーバを管理することができます。ユーザ定義のオーバーレイネットワークは、LinuxとWindowsの両方にデプロイできます。iManager Dockerホストが、eDirectory Dockerホストと同じDocker Swarmに含まれていることを確認します。オーバーレイネットワークでのコンテナのデプロイ方法の詳細については、「Use Overlay Networks」を参照してください。
ユーザ定義のオーバーレイネットワークにiManagerコンテナをデプロイする前に、次の推奨事項を考慮する必要があります。
eDirectoryコンテナとiManagerコンテナは、同じオーバレイネットワーク内にデプロイする必要があります。
Dockerオーバレイネットワークの外部からポートにアクセスする場合は、コンテナポートを公開する必要があります。Dockerは、デフォルトでは、ワイルドカードIPアドレスである0.0.0.0にコンテナポートを公開します。これは、ホストマシンで可能なすべての着信ポートに一致します。Dockerコンテナは、次のdocker runオプションを使用して、ホストマシンの特定のインタフェースでポートを公開するように作成する必要があります。
--publish <Host_IP Address>:host_port:container_port
次の例は、ユーザ定義のオーバーレイネットワークでのiManagerコンテナの設定方法を示しています。
docker run -it --name=iManager320 --net=eDir-overlay-nw --restart on-failure:5 --memory="1000M" --cpuset-cpus="2" --volume iManager-volume:/config --volume /path/to/iManager.env:/etc/opt/novell/iManager/conf/iManager.env --publish 443:8443 imanager:3.2.0
メモ:eDir-overlay-nwは、eDirectoryコンテナがデプロイされているDocker Swarm内のオーバレイネットワークの名前です。Docker Swarm内のオーバレイネットワークを設定する方法の詳細については、「Use Overlay Networks」を参照してください。
図 3-2 ユーザ定義のオーバーレイネットワークでのiManagerコンテナのデプロイ