En algunos casos, es fundamental realizar una depuración más profunda del problema antes de detener un contenedor o matar un proceso.
Considere seguir la siguiente lista de verificación:
1) Verifique su actual entorno de composición Docker
Run docker-compose ps
.
Si otro contenedor está usando el puerto, deténgalo docker-compose stop <service-name-in-compose-file>
o retírelo reemplazándolo stop
con rm
.
2) Compruebe los contenedores que se ejecutan fuera de su espacio de trabajo actual
Ejecutar docker ps
para ver la lista de todos los contenedores que se ejecutan en su host.
Si encuentra que el puerto está siendo utilizado por otro contenedor, puede detenerlo con docker stop <container-id>
.
(*) Debido a que no está bajo el alcance del compose
entorno de origen , es una buena práctica primero usar Docker Inspect para recopilar más información sobre el contenedor que está a punto de detener.
3) Compruebe si otros procesos que se ejecutan en el host utilizan
el puerto. Por ejemplo, si el puerto es 6379, ejecute:
$ 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
(*) También puede usar el comando lsof que se usa principalmente para recuperar información sobre archivos que son abiertos por varios procesos (sugiero ejecutar netstat
antes de eso).
Entonces, en el caso de la salida anterior, PID
is 915
. Ahora puedes ejecutar:
$ 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
Y vea el ID del proceso padre ( PPID
) y el comando de ejecución.
También puede ejecutar: $ pstree -s <PID>
a una visualización visual del proceso y sus procesos relacionados.
En nuestro caso, podemos ver que el proceso probablemente sea un demonio (PPID es 1); en ese caso, considere ejecutar:
A) $ cat /proc/<PID>/status
para obtener información más detallada sobre el proceso, como la cantidad de subprocesos generados por el proceso, sus capacidades, etc. '.
B) $ systemctl status <PID>
para ver elsystemdunidad que provocó la creación de un proceso específico. Si el servicio no es crítico, puede detenerlo y deshabilitarlo .
4) Reiniciar servicio acoplable
Run: sudo service docker restart
.
5) Ha llegado a este punto y ...
Sólo si no pone en riesgo su sistema, considere reiniciar el servidor.
sudo netstat -pna | grep 3000
para obtener el proceso que está escuchando.