2016-04-15 8 views
3

Ich habe einen Docker Schwarm manuell einrichten verwaltet (zB ohne Docker-Maschine) nach the official tutorialWie laufen Docker-komponieren gegen Docker Schwarm (ohne Docker-Maschine)

Ich bin in der Lage Container auf laufen der Schwarm erfolgreich mit docker Motor:

docker -H :4000 run redis 

ich mag docker-compose verwenden Container auf dem Schwarm zu laufen, aber ich kann nicht, dieses Recht zu bekommen scheint.

Die erste Sache, die ich erarbeiten musste, war, wie man sich zusammensetzt, um auf Port :4000 zu sprechen. Ich erreichte dies durch Angabe: export DOCKER_HOST=":4000".

Aber jetzt, wenn ich Docker-compose laufen bekomme ich folgende Fehlermeldung:

$docker-compose up 
Creating network "root_default" with the default driver 
ERROR: Error response from daemon: failed to parse pool request for address space "GlobalDefault" pool "" subpool "": cannot find address space GlobalDefault (most likely the backing datastore is not configured) 

Es fühlt sich an wie dieses Problem entweder mit TLS oder Netzwerk zu tun hat, aber ich bin ziemlich wie ratlos um es zu reparieren oder sogar weiter zu untersuchen.

Ich benutze Docker-Engine: 1.10, Compose 1.6. Swarm: neueste

Falls es sinnvoll ist, hier ist meine Docker Info:

$docker -H :4000 info 
Containers: 7 
Running: 5 
Paused: 0 
Stopped: 2 
Images: 7 
Server Version: swarm/1.2.0 
Role: primary 
Strategy: spread 
Filters: health, port, dependency, affinity, constraint 
Nodes: 2 
node02: 10.129.5.211:2375 
    └ Status: Healthy 
    └ Containers: 3 
    └ Reserved CPUs: 0/2 
    └ Reserved Memory: 0 B/2.053 GiB 
    └ Labels: executiondriver=, kernelversion=3.13.0-79-generic, operatingsystem=Ubuntu 14.04.4 LTS, storagedriver=aufs 
    └ Error: (none) 
    └ UpdatedAt: 2016-04-15T08:28:20Z 
    └ ServerVersion: 1.11.0 
node03: 10.129.6.21:2375 
    └ Status: Healthy 
    └ Containers: 4 
    └ Reserved CPUs: 0/2 
    └ Reserved Memory: 0 B/2.053 GiB 
    └ Labels: executiondriver=, kernelversion=3.13.0-79-generic, operatingsystem=Ubuntu 14.04.4 LTS, storagedriver=aufs 
    └ Error: (none) 
    └ UpdatedAt: 2016-04-15T08:28:43Z 
    └ ServerVersion: 1.11.0 
Plugins: 
Volume: 
Network: 
Kernel Version: 3.13.0-79-generic 
Operating System: linux 
Architecture: amd64 
CPUs: 4 
Total Memory: 4.105 GiB 
Name: b156985db557 
Docker Root Dir: 
Debug mode (client): false 
Debug mode (server): false 
WARNING: No kernel memory limit support 

Antwort

-1

den obigen Fehler zu entfernen, müssen Sie Docker deamon auf jedem Knoten wie dieser

Docker run -d laufen -p 4000: 4000 swarm manage -H: 4000 --replikation --advertisise 192.168.56.103:4000 consul: //192.168.56.101: 8500

+0

Hallo Shuja: https://groups.google.com/a/weave.works/forum/m/#!topic/weave-users/Mf6fv9OEd-E

Was es fixiert war. Ich denke, ich mache das schon? (na ja, zumindest auf den Master-Knoten) - Könnten Sie erklären, was genau über diesen Befehl das obige Problem behebt? – toast38coza

+0

@ toast38coza Der Fehler deutet darauf hin, dass der Docker Engine-Daemon nicht für die Arbeit mit einem Discovery-Dienst konfiguriert ist. Der obige Vorschlag wird es beheben – omercnet

+0

Ich glaube nicht, dass das das Problem ist .. der genaue Befehl, den ich für die Schwarm-Master ausgeführt habe ist: 'docker run -d -p 4000: 4000 Schwarm verwalten -H: 4000 --replication - -advertise : 4000 Konsul: // toast38coza

0

Ich verwende Docker 1.10, Docker Swarm, Docker Compose auf unserer Produktion.

Ich habe das gleiche Problem in der Vergangenheit getroffen. Und I löste es durch die Schritte wie folgt:

Schritt 1: export DOCKER_HOST=tcp://localhost:4000

Schritt 2: Überprüfen Docker Swarm durch Befehl docker info (ohne -H). Wenn es nicht OK ist, vergewissern Sie sich, dass der Swarm Manager Ihren Host betreibt.

Schritt 3: Wenn Schritt 2 in Ordnung ist. Führen Sie Ihre Anwendung auf Docker Compose docker-compose up

0

ich in das gleiche Problem lief und fand die Antwort hier:

To make it work with docker-compose 2, you should add:

network_mode: "bridge" 

to all service definitions.