在一个主机上运行多个 Incredibuild 容器

您可以在一个主机上启动和运行多个 Incredibuild 容器。例如,如果您有一个具有大量内核的主机,并且您希望在其上运行多个服务于不同 Initiator 的容器化 Helper Agent,那么这将非常有用。

注意:如需查阅通过一个机器将不同容器化 Helper Agent 连接至不同的 Initiator 的信息,请参阅 Build Group的使用

在一个主机上启动多个 Incredibuild 容器与您启动一个 Incredibuild 容器的方式相同。使用 docker run 命令启动一个容器后,重复该步骤并在相同主机上再次使用 docker run 命令。

注意docker run 命令允许一次启动一个容器。如果您想要同时启动多个容器,则需要使用 Docker 容器管理工具。

在一台主机上启动多个 Incredibuild 容器时,需要更改的一件事是将每个容器的 Agent 端口映射到主机上的不同物理端口。如果多个容器将使用同一主机端口,则与一个容器化 Agent 的通信将阻止与其他容器化 Agent 的通信。

例如,如果您将一个容器的端口映射至主机端口 31105 (BuildService) 和端口 31106-31109 (BuildHelper),切勿将另一容器的端口映射到主机的这些端口。此时可使用主机的其他可用端口进行映射,比如端口 41105 和端口 41106-41109。

> 如要在一个主机上启动和运行多个 Incredibuild 容器,请执行以下步骤:

  1. 依据基于 Incredibuild Docker 镜像启动容器这一部分的说明,使用 docker run 命令启动 Incredibuild 容器。

  2. 第一个容器开始运行后,使用 docker 运行命令启动另一个 Incredibuild 容器。设置 docker 运行命令时,验证以下内容:

    • --cpus – 根据主机的可用内核数和其他 Agent 使用的内核数,为新的容器化 Agent 输入最大内核数。

    • -p <Host_Machine_Port_No._mapped_to:BuildService_Port_No._in_the_Container>/tcp - 输入一个不同的端口号。与运行中的容器化 Agent 所用端口不同的端口号。

    • -p <Host_Machine_Port_Range_mapped_to:BuildHelper_Port_Range_in_the_Container>/tcp - 为主机输入一个与运行中的容器化 Agent 所用的不同端口范围。主机和容器的相互映射端口范围必须匹配。因此,如果您更改主机的端口范围,则也必须更改容器的端口范围。

  3. 启动其他容器化 Agent 时,可重复步骤 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

Coordinator Monitor 中显示出这两个启用的容器化 Agent: