Em alguns casos, é fundamental realizar uma depuração mais aprofundada do problema antes de interromper um contêiner ou encerrar um processo.
Considere seguir a lista de verificação abaixo:
1) Verifique seu ambiente docker compose atual
Executar docker-compose ps
.
Se a porta estiver em uso por outro contêiner, pare-a docker-compose stop <service-name-in-compose-file>
ou remova-a substituindo stop
porrm
.
2) Verifique os contêineres em execução fora de seu espaço de trabalho atual
Executar docker ps
para ver uma lista de todos os contêineres em execução em seu host.
Se você descobrir que a porta está sendo usada por outro contêiner, pode pará-la com docker stop <container-id>
.
(*) Porque você não está no escopo do compose
ambiente de origem - é uma boa prática primeiro usar docker inspect para reunir mais informações sobre o contêiner que você está prestes a parar.
3) Verifique se a porta é usada por outros processos em execução no host.
Por exemplo, se a porta é 6379 executada:
$ 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
(*) Você também pode usar o comando lsof, que é usado principalmente para recuperar informações sobre arquivos que são abertos por vários processos (sugiro que seja executado netstat
antes disso).
Portanto, no caso da saída acima, o PID
é 915
. Agora você pode executar:
$ 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
E veja o ID do processo pai ( PPID
) e o comando de execução.
Você também pode executar:$ pstree -s <PID>
para uma exibição visual do processo e seus processos relacionados.
Em nosso caso, podemos ver que o processo provavelmente é um daemon (PPID é 1) - Nesse caso, considere executar:
A) $ cat /proc/<PID>/status
para obter informações mais detalhadas sobre o processo, como o número de threads gerados pelo processo, suas capacidades, etc '.
B) $ systemctl status <PID>
para ver osystemdunidade que ocasionou a criação de um processo específico. Se o serviço não for crítico - você pode parar e desabilitar o serviço .
4) Reinicie o serviço Docker
Executar:sudo service docker restart
.
5) Você alcançou este ponto e ...
Somente se não estiver colocando seu sistema em risco - considere reiniciar o servidor.
sudo netstat -pna | grep 3000
para obter o processo que está ouvindo.