В некоторых случаях важно выполнить более глубокую отладку проблемы перед остановкой контейнера или завершением процесса.
Обратите внимание на следующий контрольный список:
1) Проверьте текущую среду создания докеров
Run docker-compose ps.
Если порт используется другим контейнером, остановите его docker-compose stop <service-name-in-compose-file>или удалите, заменив stopна rm.
2) Проверьте контейнеры, работающие за пределами вашей текущей рабочей области.
Выполните, docker psчтобы увидеть список всех контейнеров, работающих на вашем хосте.
Если вы обнаружите, что порт используется другим контейнером, вы можете остановить его с помощью docker stop <container-id>.
(*) Поскольку вы не находитесь в области действия исходной composeсреды - рекомендуется сначала использовать docker inspect для сбора дополнительной информации о контейнере, который вы собираетесь остановить.
3) Проверьте, используется ли порт другими процессами, запущенными на хосте.
Например, если порт - 6379, запустите:
$ 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
(*) Вы также можете использовать команду lsof, которая в основном используется для получения информации о файлах, которые открываются различными процессами (я предлагаю запустить netstatперед этим).
Так, в случае над выходом PIDявляется 915. Теперь можно запустить:
$ 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
И посмотрите идентификатор родительского процесса ( PPID) и команду выполнения.
Вы также можете запустить: $ pstree -s <PID>для визуального отображения процесса и связанных с ним процессов.
В нашем случае мы видим, что процесс, вероятно, является демоном (PPID равен 1) - в этом случае рассмотрите возможность запуска:
A) $ cat /proc/<PID>/status, чтобы получить более подробную информацию о процессе, например, количество потоков, порожденных процессом, его возможности и т. д. ».
Б) $ systemctl status <PID>чтобы увидетьsystemdблок, вызвавший создание определенного процесса. Если служба не критична - вы можете остановить и отключить службу .
4) Restart Docker служба
Run: sudo service docker restart.
5) Вы достигли этой точки и ..
Только если это не подвергает вашу систему опасности - подумайте о перезапуске сервера.
sudo netstat -pna | grep 3000чтобы получить прослушивающий процесс.