Singularity 运行 Docker 图片时绑定端口

Binding ports when running Docker images in Singularity

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

这最初似乎不是问题,因为奇点支持 docker 图像,但是,由于 Akka 集群的性质,我必须通过几个环境变量并绑定几个端口。例如,系统中的 'Partition Manager' 使用以下命令将是 运行:

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 命令转换为等效奇点的页面,但我就是找不到它。

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