2016-06-01 3 views
0

Der Versuch, vertraut zu machen mit Docker-compose Version 2 und im Wesentlichen Setup nur 2 einfachen Knoten-Cluster, die jeweils andereDocker-compose Service und das Netzwerk

gegeben entdecken
. 
|-- docker-compose.yml 
|-- node1 
| `-- Dockerfile 
|-- node2 
| `-- Dockerfile 

und Dockerfile als

FROM centos:centos6.6 

und Andockfensters-compose.yml als

version: '2' 
services: 
    dn1: 
    build: ./node1/. 
    hostname: dn1.foo.com 
    command: tail -f /dev/null 
    dn2: 
    build: ./node2/. 
    hostname: dn2.foo.com 
    command: tail -f /dev/null 

auf Lauf

docker-compose up -d 
docker exec -it test_dn1_1 bash 
$ hostname 
dn1.foo.com 
$ ping dn2.foo.com 
PING dn2.foo.com (23.x.x.122) 
$ ping dn1 
64 bytes from test_dn2_1.test_default (172.21.0.3) .... 

Sind Leistungen von in Containern von Standard auffindbar? Ja? von here

Ich ging davon aus, dass das Attribut "Links" erforderlich war, um die Container über einander zu informieren.

Wie konfiguriere ich explizit das docker-compose.yaml, damit die Container sich gegenseitig mit "hostname" erkennen können? Habe versucht, Links, aber das funktioniert auch nicht.

Dank

Antwort

0

Ich bin nicht sicher, ob ich Ihr Problem zu verstehen: wenn Docker-compose Version 2 verwenden, wie Sie haben, wenn Sie docker-compose up -d Ihre Container erstellt werden, und ein eigenes Netzwerk wird auch erstellt, rufen die Ihre Container sind Teil von.

Innerhalb dieses Netzwerks sind die Container erreichbar und über ihren Servicenamen erkennbar.

Smth stört mich, aber, aber ich nehme an, es ist ein Tippfehler: Wenn Sie Dienste erstellt dn1 und dn2 wie Sie haben, und Sie sind im Verzeichnis test, dann sollten Sie Ihre Container test_dn1_1 und test_dn2_1 und nicht test_dn1 genannt werden, wie Sie geschrieben haben.
Nein, ich nehme an, das ist ein Tippfehler.

So können Sie mit docker network ls überprüfen, dass es ein Netzwerk namens test_default erstellt, und wenn Sie docker network inspect test_default ausführen, finden Sie Ihre zwei Container.

Jetzt, von innen test_dn1_1, können Sie ping dn2 ausführen und es sollte auflösen.

+0

Ich möchte versuchen, meine Dienste (oder Datenknoten) nach Hostnamen aufzulösen, die ich in der Konfiguration festgelegt habe, und nicht nach ihrem Dienstnamen. Ist das möglich ? – sunny

+0

ja die Container-Namen sind Tippfehler wird das korrigieren – sunny