10

我目前正在开发一个分布式图形处理平台,该平台在 docker 容器内维护一个 Akka 集群,并且最近被授予访问大型集群的权限以对此进行测试。不幸的是,这个集群没有运行 docker,只有奇点。

这最初似乎不是问题,因为奇异性支持 docker 映像,但是,由于 Akka 集群的性质,我必须过去几个环境变量并绑定几个端口。例如,系统内的“分区管理器”将使用以下命令运行:

docker run -p $PM0Port:2551  --rm -e "HOST_IP=$IP" -e "HOST_PORT=$PM0Port" -v $entityLogs:/logs/entityLogs $Image partitionManager $PM0ID $NumberOfPartitions $ZooKeeper

通过查看 Singularity 文档,我可以看到我可以创建一个“Singularity”文件并指定环境变量,但似乎没有任何关于绑定自定义端口的文档。它也没有解释我如何将参数传递给默认入口点(该项目是使用 'sbt docker:publish' 编译的,所以我不确定重新分配它的确切位置)。

即使这是解决方案,由于存在多种参与者类型(以及每种类型的多个实例),因此在文档中指定环境变量和端口似乎需要模板、在运行时创建文件并为每个参与者构建图像。

我确信我完全错过了某个页面,该页面可以很好地将这个 docker 命令转换为等效的奇点,但我就是找不到它。

4

1 回答 1

15

Singularity 没有网络隔离,所以不需要映射任何端口。如果容器内的进程绑定到一个 IP:port,它将在主机上立即可访问。

于 2018-03-28T13:54:05.507 回答