Stop/Start Image -> Address already in use

Status
Für weitere Antworten geschlossen.

Wurzelseppi

Benutzer
Mitglied seit
01. Dez 2016
Beiträge
81
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,

auf die Gefahr hin, daß das hier schon irgendwo diskutiert wird, und ich es nicht gefunden habe, frage ich trotzdem :)

Wenn ich ein Image konfiguriere und ihm einen festen Port zuweise, funktioniert das auch beim ersten Mal ganz super.
In meinem Fall der elk Docker mapped seinen 5044 auf 30000 (den hab ich hart kodiert, damit ich einen Link machen kann) und fährt das erste Mal sauber hoch, alles schön.

Wenn ich das Image allerdings stoppe, und nochmal hochfahre, kommt der Stack nicht hoch (der Logstash um genauer zu sein) mit der Meldung "Address already in use" (ich denke er meint den Port).

Wenn ich den Port auf Auto stelle, kommt er erst mit 32770 hoch, aber beim nächsten Mal mit 32773 (oder so).
Dieses Problem habe ich auch schon in mehreren anderen Foren gefunden und es ist wohl der docker-proxy, der irgendwie Probleme macht. Das Teil abzuschießen, das den Port am Host belegt, bringt irgendwie auch nichts.

Gibt es dafür eine Lösung ?

Danke Euch und Grüße,

Wurzelseppi
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.475
Punkte für Reaktionen
358
Punkte
103
Beim Anlegen eines Containers aus einem Image konfiguiert man die Einstellungen für den Container einmalig (es sei den man löscht ihn wieder). Danach kann der Container über den Schiebe-Schalten bequem gestartet und gestopped werden.

Die von Die geschilderten Probleme kenne ich nicht, damals weder unter DSM5.2, noch jetzt unter DSM6.0.2.
Ich kenne es nur wenn man beim Anlegen eines Containers einen durch DSM verwendeten Port oder eines anderen Docker-Containers (egal ob gestartet oder gestoppt) verwenden will.
Das selbe gilt auch für den Import von vorher exportierten Einstellungen.
 

Wurzelseppi

Benutzer
Mitglied seit
01. Dez 2016
Beiträge
81
Punkte für Reaktionen
0
Punkte
6
Hallo nochmal,

Danke erstmal für die Antwort.
Ich kann das Ganze leider immer reproduzieren.
Das selbp/elk Image ist das bei mir. Ich mappe die Docker Ports 5601 & 5044 auf 10001 & 10000 & starte den Container. Alles fährt hoch, alles schön.
Das stoppe ich das Ganze, und warte so ne Minute (nur zur Sicherheit) und starte es dann wieder.

Logstash sagt dann bei Starten:

<Errno::EADDRINUSE: Address already in use - bind - Address already in use>

Es geht leider nicht :-(
 

bastians

Benutzer
Mitglied seit
29. Jun 2011
Beiträge
65
Punkte für Reaktionen
0
Punkte
6
Moin,

2min warten zwischen stop und start sollte helfen.
Das ist ein recht verbreitetes Problem. Wenn man einen Socket/Port schliesst, hält das Betriebssystem den Port noch etwa 2min (das kann man konfigurieren) offen um eventuell noch eintreffende Pakete nicht versehentlich an den (wieder) neugeöffneten Port zu geben. Kann man mit netstat sehen. Der Port müßte dann im Status FIN_WAIT2 (oder so ähnlich) sein.

ciao
Bastian
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.475
Punkte für Reaktionen
358
Punkte
103
Ich hab entliche Docker-Container im Einsatz und kenne das Problem nicht.

Zumal ergibt es keinen Sinn, dass Sockets offen gehalten werden NACHDEM der verwaltenede Prozess nicht mehr läuft.
Sprich es wird auch nicht auf evtl. Spät ankommende Pakete in irgendeiner Form gewartet.

Die einzige Erklärung wäre das der Prozess der den Socket verwaltet entweder beim runterfahren nicht sauber hinter sich aufräumt (kein gracefull shutdown) oder unmittelbar neu gestartet wird (ausgeführt als system daemon).

Verwenden dein ELK-Image einen init-system bspw. supervisord oder s6? Damit könnte man gezielt das Prozess-Handling beeinfluss. Mit s6 kann bspw. ein Dienst so konfiguriert werden, dass er bei Beendigung neu startet (als recovery mechanismus) oder den Container herunterfährt. S6 kann alle ihm unterliegenden Dienste ordnungsgemäß herunterfahren und kümmert sich um Zombie-Prozesse..

Und ich habe neben der Syno noch 2 weitere Docker-Hosts laufen. Allerdings verwenden die Images, die ich verwende auch allesamt das S6 init system.
Ich gehe mal davon aus das das von Dir verwendete ELK-Image das nicht tut.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat