Dans certains cas, il est essentiel d'effectuer un débogage plus approfondi du problème avant d'arrêter un conteneur ou de tuer un processus.
Pensez à suivre la liste de contrôle ci-dessous:
1) Vérifiez votre environnement de composition de docker actuel
Exécutez docker-compose ps
.
Si le port est utilisé par un autre conteneur, arrêtez-le docker-compose stop <service-name-in-compose-file>
ou retirez-le en le remplaçant stop
par rm
.
2) Vérifiez les conteneurs s'exécutant en dehors de votre espace de travail actuel
Exécutez docker ps
pour voir la liste de tous les conteneurs s'exécutant sous votre hôte.
Si vous trouvez que le port est utilisé par un autre conteneur, vous pouvez l'arrêter avec docker stop <container-id>
.
(*) Parce que vous n'êtes pas dans le cadre de l' compose
environnement d' origine , il est préférable d' utiliser d'abord docker inspect pour collecter plus d'informations sur le conteneur que vous êtes sur le point d'arrêter.
3) Vérifiez si le port est utilisé par d'autres processus exécutés sur l'hôte
Par exemple, si le port est 6379 run:
$ 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
(*) Vous pouvez également utiliser la commande lsof qui est principalement utilisée pour récupérer des informations sur les fichiers ouverts par divers processus (je suggère de courir netstat
avant cela).
Donc, dans le cas de la sortie ci-dessus, le PID
est 915
. Vous pouvez maintenant exécuter:
$ 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
Et voyez l'ID du processus parent ( PPID
) et la commande d'exécution.
Vous pouvez également exécuter: $ pstree -s <PID>
vers un affichage visuel du processus et de ses processus associés.
Dans notre cas, nous pouvons voir que le processus est probablement un démon (PPID vaut 1) - Dans ce cas, envisagez d'exécuter:
A) $ cat /proc/<PID>/status
afin d'obtenir des informations plus détaillées sur le processus comme le nombre de threads générés par le processus, ses capacités, etc. ».
B) $ systemctl status <PID>
pour voir lesystemdunité qui a provoqué la création d'un processus spécifique. Si le service n'est pas critique, vous pouvez arrêter et désactiver le service .
4) Redémarrez le service Docker
Run: sudo service docker restart
.
5) Vous avez atteint ce point et ..
Uniquement si cela ne met pas votre système en danger - envisagez de redémarrer le serveur.
sudo netstat -pna | grep 3000
pour obtenir le processus qui écoute.