我想知道是否可以使用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
我一直在使用图片的衍生物(Dockerfile
是here)。我的步骤非常简单,请按照website上的说明进行操作:
docker-machine create -d virtualbox local
eval "$(docker-machine env local)"
docker run --rm swarm create
docker-machine create \ -d virtualbox \ --swarm \ --swarm-master \ --swarm-discovery token://$TOKEN \ swarm-master
docker-machine create \ -d virtualbox \ --swarm \ --swarm-discovery token://$TOKEN \ swarm-agent-00
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?
。然后我尝试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)
bior: image: stevenhart/bior_annotate command: login -f sgeadmin volumes: - .:/Data links: - sge sge: build: . ports: - "6444" - "6445" - "6446"
使用docker-compose up
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
它不应该认为有多个CPU,即我的每个群集节点吗?
答案 0 :(得分:3)
我假设您在docker中运行qhost。
swarm的东西是,它没有将所有主机组合成一台大型机器(我曾经这么认为)。
相反,例如,你有5台核心机器,然后swarm将选择一台尽可能少的码头工人的机器并在该机器上运行docker。
因此,swarm是将终结者传播到集群中的控制器,而不是将主机组合成一个。
希望它有所帮助!如果您还有其他问题,请询问:)
<强>更新强>
我不确定它是否适合你,但如果你不能用swarm得到它,我会推荐kubernetes。我在我的Raspberry Pis上使用它。它比swarm更酷,更成熟,有自动修复等功能。
我不知道,但肯定有一种方法可以将docker与hadoop集成......