Dalam beberapa kasus, sangat penting untuk melakukan debugging yang lebih mendalam pada masalah sebelum menghentikan container atau menghentikan proses.
Pertimbangkan untuk mengikuti checklist di bawah ini:
1) Periksa Anda saat ini lingkungan buruh pelabuhan compose
Run docker-compose ps
.
Jika port sedang digunakan oleh kontainer lain, hentikan docker-compose stop <service-name-in-compose-file>
atau lepaskan dengan mengganti stop
dengan rm
.
2) Periksa penampung yang berjalan di luar ruang kerja Anda saat ini.
Jalankan docker ps
untuk melihat daftar semua penampung yang berjalan di bawah host Anda.
Jika Anda menemukan port sedang digunakan oleh kontainer lain, Anda dapat menghentikannya dengan docker stop <container-id>
.
(*) Karena Anda tidak berada dalam cakupan compose
lingkungan asal - sebaiknya gunakan inspeksi buruh pelabuhan terlebih dahulu untuk mengumpulkan lebih banyak informasi tentang container yang akan Anda hentikan.
3) Periksa apakah port digunakan oleh proses lain yang berjalan pada host
Misalnya jika port 6379 dijalankan:
$ 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
(*) Anda juga dapat menggunakan perintah lsof yang terutama digunakan untuk mengambil informasi tentang file yang dibuka oleh berbagai proses (saya sarankan berjalan netstat
sebelum itu).
Jadi, Jika output di atas PID
adalah 915
. Sekarang Anda dapat menjalankan:
$ 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
Dan lihat ID dari proses induk (PPID
) dan perintah eksekusi.
Anda juga dapat menjalankan: $ pstree -s <PID>
ke tampilan visual proses dan proses terkaitnya.
Dalam kasus kami, kami dapat melihat bahwa proses mungkin adalah daemon (PPID adalah 1) - Dalam hal ini pertimbangkan untuk menjalankan:
A) $ cat /proc/<PID>/status
untuk mendapatkan informasi yang lebih mendalam tentang proses seperti jumlah utas yang muncul oleh proses, kemampuannya, dll. '.
B) $ systemctl status <PID>
untuk melihatsystemdunit yang menyebabkan terciptanya proses tertentu. Jika layanan tidak kritis - Anda bisa menghentikan dan menonaktifkan layanan .
4) Mulai ulang layanan Docker
Run: sudo service docker restart
.
5) Anda mencapai titik ini dan ..
Hanya jika ini tidak membahayakan sistem Anda - pertimbangkan untuk memulai ulang server.
sudo netstat -pna | grep 3000
untuk mendapatkan proses yang mendengarkan.