Sun Grid Engine使用Docker for HPC

我想知道是否可以使用Docker创build虚拟群集,以便可以使用SGE群集pipe理运行专为HPC群集devise的脚本。 这些都是相当大/复杂的工作stream程,所以它不仅仅是我可以重写的东西,比如TORQUE / PBS。 理论上,我应该能够让Docker认为有多个节点,就像我的内部HPC群集一样。 如果有人能救我痛苦,告诉我不能做,我会非常感激。

警告:我不是群集pipe理员。 我更像最终用户。 我在我的Mac OSX 10.9.5上运行

Client version: 1.7.0 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 0baf609 OS/Arch (client): darwin/amd64 Server version: 1.7.0 Server API version: 1.19 Go version (server): go1.4.2 Git commit (server): 0baf609 OS/Arch (server): linux/amd64 bash-3.2$ boot2docker version Boot2Docker-cli version: v1.7.0 Git commit: 7d89508 

我一直在使用图像的派生( Dockerfile在这里 )。 我的步骤非常简单,请按照网站上的说明操作:

  1. 创build图像
 docker-machine create -d virtualbox local 
  1. 使其成为活动图像
 eval "$(docker-machine env local)" 
  1. 获取群图像
 docker run --rm swarm create 
  1. 创build群主
 docker-machine create \ -d virtualbox \ --swarm \ --swarm-master \ --swarm-discovery token://$TOKEN \ swarm-master 
  1. 使用令牌创build群集节点
 docker-machine create \ -d virtualbox \ --swarm \ --swarm-discovery token://$TOKEN \ swarm-agent-00 
  1. 添加另一个节点
  docker-machine create \ -d virtualbox \ --swarm \ --swarm-discovery token://$TOKEN \ swarm-agent-01 

现在这里是疯狂的部分。 当我尝试使用这个命令来源图像: eval "$(docker-machine env --swarm swarm-master)"我得到这个愚蠢的东西Cannot connect to the Docker daemon. Is 'docker -d' running on this host? Cannot connect to the Docker daemon. Is 'docker -d' running on this host? 。 然后我试了eval $(docker-machine env swarm-master) ,它可以工作,但我不是100%确定它是正确的做法:

 NAME ACTIVE DRIVER STATE URL SWARM local virtualbox Running tcp://192.168.99.105:2376 swarm-agent-00 virtualbox Running tcp://192.168.99.107:2376 swarm-master swarm-agent-01 virtualbox Running tcp://192.168.99.108:2376 swarm-master swarm-master * virtualbox Running tcp://192.168.99.106:2376 swarm-master (master) 
  1. 在这一点上,我使用这个yaml文件构build我的多容器应用程序:
 bior: image: stevenhart/bior_annotate command: login -f sgeadmin volumes: - .:/Data links: - sge sge: build: . ports: - "6444" - "6445" - "6446" 

使用docker-compose up

  1. 然后最后打开新的图像

docker运行-it –rm dockersge_sgelogin-f sgeadmin

但是这是问题

当我运行qhost我得到以下内容:

  HOSTNAME ARCH NCPU NSOC NCOR NTHR LOAD MEMTOT MEMUSE SWAPTO SWAPUS ---------------------------------------------------------------------------------------------- global - - - - - - - - - - 6bf6f6fda409 lx-amd64 1 1 1 1 0.01 996.2M 96.2M 1.1G 0.0 

难道它不应该认为有多个CPU,即我的每一个群集节点?

我假设你在docker里运行qhost。

与群的东西是,它并没有把所有的主机组合成一个机器(我曾经这么认为)。

相反,例如,你有5个核心机器,那么swarm会select一个尽可能less的docker的机器,然后在该机器上运行docker。

所以Swarm是将Docker扩展到集群中的控制器,而不是将主机合并为一个。

希望能帮助到你! 如果您还有其他问题,请询问:)

UPDATE

我不确定它是否适合你,但如果你没有得到它,我会推荐kubernetes。 我用在我的树莓皮。 它比群体更酷更成熟,有自动修复等function。

我不知道,但肯定有一种方法集成docker与hadoop …