W niektórych przypadkach krytyczne jest przeprowadzenie dokładniejszego debugowania problemu przed zatrzymaniem kontenera lub zabiciem procesu.
Rozważ skorzystanie z poniższej listy kontrolnej:
1) Sprawdź bieżące środowisko Docker Compose
Run docker-compose ps
.
Jeśli port jest używany przez inny pojemnik, zatrzymaj go docker-compose stop <service-name-in-compose-file>
lub usuń, zastępując stop
go rm
.
2) Sprawdź kontenery działające poza bieżącym obszarem roboczym
Uruchom, docker ps
aby zobaczyć listę wszystkich kontenerów uruchomionych na Twoim hoście.
Jeśli okaże się, że port jest używany przez inny kontener, możesz go zatrzymać za pomocą docker stop <container-id>
.
(*) Ponieważ nie jesteś objęty zakresem compose
środowiska źródłowego - dobrą praktyką jest najpierw użycie docker inspect, aby zebrać więcej informacji o kontenerze, który zamierzasz zatrzymać.
3) Sprawdź, czy port jest używany przez inne procesy działające na hoście
Na przykład, jeśli port to 6379, uruchom:
$ 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
(*) Możesz także użyć polecenia lsof, które służy głównie do pobierania informacji o plikach otwieranych przez różne procesy (sugeruję uruchomienie netstat
wcześniej).
Tak więc w przypadku wyjścia powyżej PID
is 915
. Teraz możesz biegać:
$ 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
Zobacz też identyfikator procesu nadrzędnego ( PPID
) i polecenie wykonania.
Możesz także uruchomić: $ pstree -s <PID>
do wizualnej prezentacji procesu i związanych z nim procesów.
W naszym przypadku widzimy, że proces prawdopodobnie jest demonem (PPID to 1) - w takim przypadku rozważ uruchomienie:
A) $ cat /proc/<PID>/status
w celu uzyskania bardziej szczegółowych informacji o procesie, takich jak liczba wątków utworzonych przez proces, jego możliwości itp. ”.
B) $ systemctl status <PID>
, aby zobaczyć pliksystemdjednostkę, która spowodowała powstanie określonego procesu. Jeśli usługa nie jest krytyczna - możesz ją zatrzymać i wyłączyć .
4) Restart Docker serwis
Run: sudo service docker restart
.
5) Osiągnąłeś ten punkt i ...
Tylko jeśli nie stwarza to zagrożenia dla Twojego systemu - rozważ ponowne uruchomienie serwera.
sudo netstat -pna | grep 3000
aby uzyskać proces, który nasłuchuje.