Docker コンテナの起動

Incredibuild のイメージがホストマシンに保存されたら、イメージを実行し、それをベースにしたコンテナを起動するために、docker run コマンドを使用する必要があります。

> Incredibuild Docker イメージをコンテナとして実行

  • PowerShell またはターミナルで以下のコマンドを入力して、Incredibuild Docker イメージに基づいたコンテナを起動します。

    コピー
    docker run --cpus <Max_No._of_Cores_to_Use> 
    -e Coordinator=<Coordinator_Machine_IP_Adddress_or_Hostname> 
    -e CoordinatorPort=<Coordinator_Port_No.> 
    -e BuildServicePort=<Agent_Port_No._for_Coordinator_Communication>
    -e BuildHelperPort=<First_Agent_Port_No._in_a_Range_for Communicating_with_the_Agent_Cores>" 
    -it 
    -p <Host_Machine_Port_No._mapped to>:<BuildServicePort No._in the_Container>/tcp 
    -p <Start-End_Port_Range_in the Host_Machine_mapped_to>:
    <Start-End_Port_Range_for_the_Agent_Cores_in_the Container>/tcp 
    <IncrediBuild_Image>  

コマンドの詳細:

  • --cpus [オプション] - コンテナエージェントが使用する CPU コアの最大数です。デフォルトは「2」コアです。数値が指定されていない場合は、デフォルトの数値が有効になります。たとえば、Agent で 8 コア以下を使用する場合は、 --cpus 8 と入力します。この CPU 数値を設定するときは、使用する CPU コアの数、ホスト マシンのコア数、コンテナに割り当てたい使用可能なコアの数、このホスト マシンで追加の Incredibuild コンテナを実行するかどうか考慮してください。

  • -e Coordinator= [必須] - コンテナエージェントと通信する Coordinator の IP アドレスまたはホスト名です。例えば、IP アドレスが 172.0.0.0 の Coordinator に Agent を接続するには、-e Coordinator=172.0.0.0のように入力します。

  • -e CoordinatorPort= [オプション] - Agent との通信に使用する Coordinator ポート番号です。デフォルトのポート番号は「31104」です。ほかに指定がない場合はたとえば、エージェントとの通信に Coordinator マシンのポート 20001 を使用するには、次のように入力します。-e CoordinatorPort=20001.

  • -e BuildServicePort= [オプション] - Coordinator との通信に使用する Agent ポート番号です。デフォルトのポート番号は「31105」です。ほかに指定がない場合はデフォルトが適用されます。例えば、エージェントとコーディネータ間の通信にコンテナ上のポート 40001 を割り当てるには、 -e BuildServicePort=40001と入力します。

  • -e BuildHelperPort= [オプション] - Initiator とコンテナエージェントコアの間の通信のための、ポート範囲内の最初の Agent ポート番号です。コンテナ Agent の利用可能なコアに対して、連続してポートが開放されていなければなりません。例えば、最初のポート番号が「3200」で Agent が 4 コアの場合、3 つの連続するポート (「3201」「3202」「3203」) を開放する必要があります。BuildHelper のデフォルトのポート番号は「31106」です。ほかに指定がない場合はデフォルトのポートを使用します。範囲に含まれる利用可能な Agent コアの数は、--cpus パラメータの値に依存します。例えば、ココンテナエージェントの 4 コアとの通信にコンテナ上のポート 32000 ~ 32003 を割り当てるには、-e BuildHelperPort=32000のように入力します

  • -it [必須] - 一般的な docker run オプションで、TTY を使ってコンテナにログインできるようにします。。

  • -p <Host_Machine_Port_No._mapped to>:<BuildServicePort No.>/tcp [Mandatory] - ポート番号に対するホストマシンの物理オープンポートのマッピングを指定します。。Coordinator と通信するためにコンテナ内の Agent にはオープン ポートが必要です。Coordinator マシンと通信するには、このポートをホストマシンのオープン ポートに対応付ける必要があります。たとえば、Coordinator との通信で、ホストマシン上のポート 30044 をコンテナ上のポート 40001 にマッピングする場合は、-p 30044:40001/tcpのように入力します。注意: BuildService のポート番号を指定しなかった場合は、デフォルトのポート番号「31105」を入力する必要があります31105。例:-p 30044:31105/tcp

  • -p <Start-End_Port_Range_in the Host_Machine_mapped_to>:<Start-End_Port_Range_for_the_Agent_Cores_in_the Container>/tcp -ホストマシンの物理ポート範囲とコンテナの BuildServicePort のポート範囲とのマッピングを指定します。Initiator とコンテナ Agent コアの間で通信するためには、コンテナ内で開放されたポート範囲とホストマシンのポート範囲を対応付ける必要があります。ホスト マシンとコンテナのこれらのポート範囲は同じである必要があります。例えば、コンテナエージェント の 4 コアとの通信では、ホストマシンのポート範囲 32000-32003 をコンテナのポート範囲 32000-32003 にマップするために、-p 32000-32003:32000-32003/tcpのように入力します。注意: BuildService のポート番号を指定しなかった場合は、デフォルトのポート範囲の最初の番号「31106」を入力する必要があります例:-p 31106-31109:31106-31109/tcp

  • <Incredibuild_Image> [必須] - マシンにダウンロードされたIncredibuildイメージの名前です。例:Incredibuild:9.5.0

例えば、ターミナルで以下のコマンドを入力し、アクティブなAgentを持つIncredibuildコンテナを起動した場合です。

コピー
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

コマンドの詳細:

  • --cpus - コンテナエージェントが使用できる最大コア数は、4コアです。

  • -e Coordinator= - Agent は、ホスト名がIncredibuild1 である Coordinator と通信します。

  • -e CoordinatorPort= - Agent との通信に使用する Coordinator ポート番号は31104です。

  • -e BuildServicePort= - Coordinator との通信に使用する Agent ポート番号は31105です

  • -e BuildHelperPort= - Agentコアと通信するためのポート範囲における、最初のAgentポート番号は31106です。Agent は最大 4 コアを使用するためコンテナ内でさらに 3 つのポート (311073110831109) を開放する必要があります。

  • -it - generaldocker run TTYを使用してコンテナにログインするためのオプションです。

  • -p 31105:31105/tcp - ホストマシンのポート番号31105 は、コンテナエージェント と Coordinator 間の通信用に、コンテナのポート番号31105 にマッピングされています。

  • -p 31106-31109:31106-31109/tcp - ポート範囲31106-31109 は、コンテナ上のポート範囲31106-31109 にマッピングされ、コンテナエージェント コ アと Initiator 間の通信用に使用されます。

  • <Incredibuild_Image> - コンテナの起動に使用する Incredibuild イメージはIncredibuild/9.5.0です。

出力は次の通り:

コピー
Setting Coordinator to IncrediBuild1
Setting Coordinator Port to 31104
Setting BuildService Port to 31105
Setting BuildHelper Port to 31106
Starting IncrediBuild Agent Service

コンテナが起動すると、コンテナ化されたアクティブな Agent が Incredibuild 環境に追加されてこの新しい Agent は、docker run コマンドで詳細を入力した Coordinator にサブスクライブされ、コーディネーター モニターに表示されるようになります。

注意:

  • コンテナ Agent にはコンテナ ID とホスト名に基づく名前が付けられます。コンテナエージェント に意味のある名前を付けたい場合は、--hostname Docker オプションを使用してコンテナの内部ホスト名を指定し、それがコンテナエージェント名に明示されるようにします。

  • コンテナ Agent を Initiator として使用する場合は、ホストのファイルシステムやインストール環境は利用できません。これは、コンテナがホストから隔離されているためです。例えば、コンテナ Agent から Visual Studio プロジェクトをビルドしたい場合、コンテナに Visual Studio をインストールしてプロジェクトをコピーする必要があります。

  • Incredibuild コンテナを停止、削除、終了した場合、コンテナ Agent に割り当てられていたライセンスは自動的にライセンス プールに戻りません。コンテナ Agent のライセンスを解除して、別の Agent に再割り当てしたい場合は、次の手順でサブスクライブ解除する必要があります。

> コンテナ Agent からライセンスをサブスクライブ解除

  • Coordinator モニターでコンテナ Agent を右クリックするか、ポップアップメニューから、Unsubscribe オプションを選択します。注意: コーディネーター モニターでAgent メニューを開き、Unsubscribe オプションを選択することもできます。

    Agent に割り当てられていたライセンスがライセンス プールに戻され、コンテナ Agent が Coordinator モニターから削除されます。