使用Docker for HPC和Sun Grid Engine

Ste*_*art 5 sungridengine docker

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

警告:我不是集群管理员.我更像是最终用户.我在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
Run Code Online (Sandbox Code Playgroud)

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

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

现在这里是疯狂的部分.当我尝试使用此命令来源图像时:eval "$(docker-machine env --swarm swarm-master)"我得到了这个愚蠢的东西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)
Run Code Online (Sandbox Code Playgroud)
  1. 此时,我使用这个yaml文件构建我的多容器应用程序:
bior:
 image: stevenhart/bior_annotate
 command: login -f sgeadmin
 volumes:
  - .:/Data
 links: 
  - sge

sge:
 build: .
 ports:
  - "6444"
  - "6445"
  - "6446"
Run Code Online (Sandbox Code Playgroud)

运用 docker-compose up

  1. 然后最终打开新图像

docker run -it --rm dockersge_sge login -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
Run Code Online (Sandbox Code Playgroud)

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

lux*_*xas 3

我假设您正在 docker 内运行 qhost。

swarm 的问题是,它不会将所有主机组合成一台大机器(我曾经这么认为)。

相反,例如,您有 5 台单核机器,那么 swarm 将选择一台具有尽可能少的 docker 的机器,并在该机器上运行 docker。

所以 swarm 是一个控制器,它将 docker 分布在一个集群中,而不是将主机组合成一个。

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

更新

我不确定它是否适合你,但如果你不能使用 swarm,我会推荐 kubernetes。我在我的树莓派上使用它。它非常酷,比 swarm 更成熟,有自动修复等功能。

我不知道,但肯定也有一种将 docker 与 hadoop 集成的方法......