在一个主机上运行多个 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 容器,请执行以下步骤:
-
依据基于 Incredibuild Docker 镜像启动容器这一部分的说明,使用 docker run 命令启动 Incredibuild 容器。
-
第一个容器开始运行后,使用 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 所用的不同端口范围。主机和容器的相互映射端口范围必须匹配。因此,如果您更改主机的端口范围,则也必须更改容器的端口范围。
-
-
启动其他容器化 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: