複数コンテナの実行
ここでは 1 台のホストマシンで複数の Incredibuild コンテナを起動・実行する方法をみていきます。これは、たくさんのコアを搭載するホストマシン上でコンテナ化された複数の Helper Agent を実行して複数の Initiator にコアを提供したい場合などに便利です。
注意: 1 台のマシンから複数のコンテナ Helper Agent を異なる Initiator に接続する手順については「Incredibuild Docker との連携」をご覧ください。
1 台のホストマシンで複数の Incredibuild コンテナを起動する手順は単一のコンテナを起動する場合と同様です。docker run コマンドで1つのコンテナを起動したら、手順を繰り返して、同じホストマシンで再度docker run コマンドを使用します。
注意:docker run コマンドは、一度に1つのコンテナを起動することができます。コンテナを同時に複数起動したい場合は、Docker コンテナ管理ツールを使用する必要があります。
1 台のホストマシン上で複数の Incredibuild コンテナを起動する場合は、コンテナごとに Agent ポートをホストマシン上の物理ポートに対応させなければなりません。ホストマシンの同じポートを複数のコンテナに紐付けた場合、コンテナ Agent の通信がほかの Agent にブロックされます。
例えば、あるコンテナのポートをホストマシンの「31105」番ポート (BuildService) と「31106 - 31109」番ポート (BuildHelper) にマッピングした場合、別のコンテナはこれらのポートを避け、「41105」と「41106 - 41109」のようにほかのポートを使用します。
> 1 台のホストマシン上で複数の Incredibuild コンテナを起動・実行
-
Incredibuild Docker Image に基づくコンテナの起動 の説明に従って、docker run コマンドを使用して、1つの Incredibuild コンテナを起動します。
-
コンテナが稼働したら <docker run> コマンドで次の Incredibuild コンテナを起動します。<docker run> コマンドを設定する際は次を確認してください。
-
--cpus - ホストマシンの利用可能なコア数、および他の Agent が使用するコア数に基づいて、新しいコンテナエージェントの最大コア数を入力します。
-
-p <Host_Machine_Port_No._mapped_to:BuildService_Port_No._in_the_Container>/tcp - 別のポート番号を入力してください。。
-
-p <Host_Machine_Port_Range_mapped_to:BuildHelper_Port_Range_in_the_Container>/tcp - 実行中のコンテナエージェントが使用するものとは異なるホストマシンのポート範囲を入力します。ホストマシンとコンテナで、互いにマッピングされるポート範囲が一致する必要があります。ホストマシンのポート範囲を変更した場合は、コンテナのポート範囲も変更する必要があります。す。
-
-
コンテナ Agent を追加で起動するには上記の手順 2 を繰り返します。
次の例では 1 台のホストマシン上で 2 つの Incredibuild コンテナを起動しています。
あるコンテナに対して、以下のdocker run コマンドを入力しました。
docker run --cpus 4
-e Coordinator=IncrediBuild1
-e CoordinatorPort=31104
-e BuildServicePort=31105
-e BuildHelperPort=31106
-it
-p 31105:31105/tcp
-p 31106-31109:31106-31109/tcp
incredibuild:9.5.0
もう一つのコンテナでは、docker run コマンドで、ホストマシン上の異なるポートマッピングが入力されています。
docker run --cpus 4
-e Coordinator= IncrediBuild1
-e CoordinatorPort=31104
-e BuildServicePort=41105
-e BuildHelperPort=41106
-it
-p 41105:41105/tcp
-p 41006-41109:41106-41109/tcp
incredibuild:9.5.0
2 つのアクティブなコンテナ Agent が Coordinator モニターに表示されます。