2015-07-21 16 views
5

Ich frage mich, ob es möglich ist, mit Docker einen virtuellen Cluster zu erstellen, damit ich Skripte ausführen kann, die für HPC-Cluster mithilfe der SGE-Clusterverwaltung entworfen wurden. Das sind ziemlich große/komplizierte Arbeitsabläufe, also ist es nicht nur etwas, das ich neu schreiben kann, sagen wir für TORQUE/PBS. Theoretisch sollte ich Docker dazu bringen können, zu denken, dass es mehrere Knoten gibt, genau wie mein interner HPC-Cluster. Wenn mir jemand den Schmerz ersparen kann, der mir sagt, dass es nicht möglich ist, wäre ich sehr dankbar.Verwenden von Docker für HPC mit Sun Grid Engine

Warnung: Ich bin kein Cluster-Administrator. Ich bin eher wie der Endbenutzer. Ich verwende auf meinem 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 

Ich habe ein Derivat eines Bildes unter Verwendung von (der Dockerfile ist here). Meine Schritte ziemlich einfach sind und folgen Sie den Anweisungen auf dem website:

  1. Bild erstellen
docker-machine create -d virtualbox local 
  1. es Machen Sie das aktive Bild
eval "$(docker-machine env local)" 
  1. Get Schwarm Bild
docker run --rm swarm create 
  1. erstellen Schwarm Master
docker-machine create \ 
    -d virtualbox \ 
    --swarm \ 
    --swarm-master \ 
    --swarm-discovery token://$TOKEN \ 
    swarm-master 
  1. Verwenden des Tokens die Schwarm Knoten
docker-machine create \ 
-d virtualbox \ 
--swarm \ 
--swarm-discovery token://$TOKEN \ 
swarm-agent-00 
  1. anderen Knoten
hinzufügen zu erstellen
docker-machine create \ 
-d virtualbox \ 
--swarm \ 
--swarm-discovery token://$TOKEN \ 
swarm-agent-01 

Jetzt hier ist der verrückte pa rt. Wenn ich versuche, das Bild mit diesem Befehl zu erhalten: eval "$(docker-machine env --swarm swarm-master)" Ich bekomme dieses blöde Ding Cannot connect to the Docker daemon. Is 'docker -d' running on this host?.Ich habe dann versucht eval $(docker-machine env swarm-master) und es funktioniert, aber ich bin nicht 100% sicher, dass es das Richtige zu tun:

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. An dieser Stelle ich bauen meine Multi-Container App mit dieser yaml Datei:
bior: 
image: stevenhart/bior_annotate 
command: login -f sgeadmin 
volumes: 
    - .:/Data 
links: 
    - sge 

sge: 
build: . 
ports: 
    - "6444" 
    - "6445" 
    - "6446" 

mit docker-compose up

  1. Und dann endlich das neue Bild

Docker laufen -es --rm dockersge_sge Login -f sgeadmin

Aber hier eröffnen ist das Problem

wenn ich qhost betreibe ich bekommen folgendes:

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 

Sollte es nicht denken, dass es mehrere CPUs gibt, d. H. Jeden meiner Schwarmknoten?

Antwort

3

Ich nehme an, dass Sie qhost in Ihrem Andockfenster ausführen.

Die Sache mit Schwarm ist, dass es nicht alle Hosts in einem großen Maschine kombiniert (ich dachte früher).

Stattdessen haben Sie zum Beispiel 5 Ein-Kern-Maschinen, dann wird Schwarm eine Maschine mit so wenigen Docker wie möglich auswählen und das Andockfenster auf dieser Maschine ausführen.

Also ist der Schwarm der Controller, der die Docker in einem Cluster verteilt, anstatt die Hosts in einem zu kombinieren.

Hoffe es hilft! Wenn Sie weitere Fragen haben, wenden Sie sich bitte :)

UPDATE

Ich bin mir nicht sicher, ob es Ihnen passt, aber wenn Sie es nicht mit Schwarm bekommen, würde ich Kubernetes empfehlen. Ich benutze es auf meinem Himbeer Pis. Es ist sehr cool und reifer als Schwarm, mit Dingen wie Auto-Heilung und so weiter.

Ich weiß es nicht, aber sicherlich gibt es eine Möglichkeit, Docker mit Hadoop zu integrieren ...

+0

Danke. Das macht Sinn, wenn man sieht, was ich sehe. Ich habe gerade die Google Group des Entwicklers angepickt, um zu sehen, ob es immer noch möglich ist, durch eine Art Workaround (vielleicht nicht einmal Schwarm?). –

+0

Haben Sie eine Beratung, um Ihren Kommentar zu kubernetes zu erweitern? Wie könnte man sge installieren (und Knoten hinzufügen) in einem Andockfenster, das darauf abzielt, sie auf Kubernetes auszuführen? – Brett

+0

Leider bin ich nicht vertraut mit SGE, aber wenn Sie eine funktionale SGE-Setup in Docker haben, sollte es nicht schwierig sein, in Kubernetes zu konvertieren. In der Tat, Kubernetes behandelt nur den Zeitplan der Container. Du musst es googeln :) – luxas