In einigen Fällen ist es wichtig, ein eingehenderes Debuggen des Problems durchzuführen, bevor ein Container gestoppt oder ein Prozess beendet wird.
Befolgen Sie die folgende Checkliste:
1) Überprüfen Sie die aktuellen Docker compose Umgebung
ausführen docker-compose ps
.
Wenn der Port von einem anderen Container verwendet wird, stoppen Sie ihn mit docker-compose stop <service-name-in-compose-file>
oder entfernen Sie ihn durch Ersetzen stop
durch rm
.
2) Überprüfen Sie die Container, die außerhalb Ihres aktuellen Arbeitsbereichs ausgeführt werden.
Führen docker ps
Sie die Liste aller Container aus, die unter Ihrem Host ausgeführt werden.
Wenn Sie feststellen, dass der Port von einem anderen Container verwendet wird, können Sie ihn mit stoppen docker stop <container-id>
.
(*) Da Sie sich nicht im Bereich der Ursprungsumgebung befinden, compose
empfiehlt es sich, zuerst Docker Inspect zu verwenden, um weitere Informationen zu dem Container zu sammeln, den Sie stoppen möchten.
3) Überprüfen Sie, ob der Port von anderen auf dem Host ausgeführten Prozessen verwendet wird.
Beispiel: Wenn der Port 6379 ausgeführt wird:
$ sudo netstat -ltnp | grep ':6379'
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 915/redis-server 12
tcp6 0 0 ::1:6379 :::* LISTEN 915/redis-server 12
(*) Sie können auch den Befehl lsof verwenden, der hauptsächlich zum Abrufen von Informationen zu Dateien verwendet wird, die von verschiedenen Prozessen geöffnet werden (ich empfehle, netstat
vorher ausgeführt zu werden).
Also, im Falle der Ausgabe über dem PID
ist 915
. Jetzt können Sie ausführen:
$ ps j 915
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 915 915 915 ? -1 Ssl 123 0:11 /usr/bin/redis-server 127.0.0.1:6379
Und sehen Sie sich die ID des übergeordneten Prozesses ( PPID
) und den Ausführungsbefehl an.
Sie können auch Folgendes ausführen: $ pstree -s <PID>
zu einer visuellen Anzeige des Prozesses und der zugehörigen Prozesse.
In unserem Fall können wir sehen, dass der Prozess wahrscheinlich ein Daemon ist (PPID ist 1). In diesem Fall sollten Sie Folgendes ausführen :
A) $ cat /proc/<PID>/status
, um detailliertere Informationen über den Prozess zu erhalten, z. B. die Anzahl der vom Prozess erzeugten Threads. seine Fähigkeiten usw. '.
B) $ systemctl status <PID>
um die zu sehensystemdEinheit, die die Erstellung eines bestimmten Prozesses verursacht hat. Wenn der Dienst nicht kritisch ist, können Sie den Dienst beenden und deaktivieren .
4) Starten Sie Docker Service
Run: sudo service docker restart
.
5) Sie haben diesen Punkt erreicht und ..
Nur wenn Ihr System dadurch nicht gefährdet wird, sollten Sie den Server neu starten.
sudo netstat -pna | grep 3000
, um den Prozess abzurufen, der zuhört.