2017-06-04 4 views
1

[Kontext: Host ist AWS-EC2/Ubuntu 14.04.5 mit Docker-Version 17.05.0-CE. Container werden aus öffentlich verfügbarem Repobild cbhihe/serf-alpine-bash erstellt. Container befinden sich auf der gleichen EC2-Instanz und nutzen das gleiche Standardbrückennetzwerk sowie die eth0-Schnittstelle der Instanz.]"IP konnte nicht aufgelöst werden"; "Lookup-Fehler" im Bash-Skript beim Beitritt dockerisierter Leibeigene-Agenten

Diese Frage basiert auf einem answer zu einem anderen Problem.

Mit zwei laufenden docker Container, jede mit einem Live-Agenten serf, ich möchte eine zwei Knoten-Server-Cluster aus einem unbeaufsichtigten Bash-Skript, die Ausführung auf dem Host, wo die beiden Container laufen.

Für ein serf Mittel im Container „DC2“ verbinden andere im Container „DC1“ mit privaten IP 172.17.0.2, mein Skript wie folgt aussieht:

docker run -d --name DC1 --rm cbhihe/serf-alpine-bash agent -node=NODE1 -iface=eth0 
docker run -d --name DC2 --rm cbhihe/serf-alpine-bash agent -node=NODE2 -iface=eth0 
docker exec -d DC2 serf join 172.17.0.2 

Die beiden ersten Zeile das erwartete Ergebnis produzieren, dh 2 laufende Behälter. Die dritte Zeile zu versagen scheint:

  • entweder still, bei Verwendung des freistehende Schalter,
  • oder mit dem folgenden Fehler in Abwesenheit eines solchen Schalters.

    Fehler der Cluster Beitritt: 1 Fehler (n) aufgetreten: fehlgeschlagen 172.17.0.2 zu beheben: Lookup 172.17.0.2: ungültiger Domain-Name

So oder so auftritt Beitritt nicht.
Das gleiche von der Konsole aus funktioniert einwandfrei.

Ich schaute auf den Import der Host-Umgebung in meinem Bash Shebang Kontext des Skripts. War nicht erfolgreich. Zeiger sind willkommen. Tx

+1

Vielleicht eine Abhängigkeit mit der Shell? Versuchen Sie 'Docker exec DC2 bash -c 'serf beitreten 172.17.0.2'' – Robert

+0

@Robert, Es funktioniert gut in meinem Anwendungsfall mit:' Docker exec "$ cont_id" bash -c' serf beitreten '"$ join_IP" 'Können Sie Machen Sie es zu einer Antwort, vielleicht mit einer kurzen Erklärung der 'bash -c' Umgebung Details für zukünftige Leser? Danke nochmal. – Cbhihe

Antwort

1

Von den Informationen in Ihrer Frage glaube ich, dass es eine Abhängigkeit von der Shell geben könnte, die Umgebungsvariablen setzt.

Versuchen Sie, von bash gestartet serf. Etwas wie dieses:

docker exec "$cont_id" bash -c 'serf join '"$join_IP" 
Verwandte Themen