Bazı durumlarda, bir konteyneri durdurmadan veya bir işlemi sonlandırmadan önce soruna daha derinlemesine bir hata ayıklama yapmak çok önemlidir.
Aşağıdaki kontrol listesini takip edin:
1) aktüel liman işçisi oluşturma ortamını kontrol
çalıştırın docker-compose ps
.
Bağlantı noktası başka bir kap tarafından kullanılıyorsa durdurun docker-compose stop <service-name-in-compose-file>
veya stop
ile değiştirerek çıkarın rm
.
2) Mevcut çalışma alanı dışından geçen kapları atın
Run docker ps
Barındırıcınıza altında çalışan tüm konteynerlerin listesini görmek için.
Bağlantı noktasının başka bir konteyner tarafından kullanıldığını tespit ederseniz, ile durdurabilirsiniz docker stop <container-id>
.
(*) Kaynak compose
ortamın kapsamında olmadığınız için - durdurmak üzere olduğunuz konteyner hakkında daha fazla bilgi toplamak için önce docker inspect'i kullanmak iyi bir uygulamadır .
3) Bağlantı noktasının ana bilgisayarda çalışan diğer işlemler tarafından kullanılıp kullanılmadığını kontrol edin
Örneğin, bağlantı noktası 6379 çalıştırılıyorsa:
$ 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
(*) Ayrıca , esas olarak çeşitli işlemler tarafından açılan dosyalar hakkında bilgi almak için kullanılan lsof komutunu da kullanabilirsiniz (bundan netstat
önce çalıştırmanızı öneririm ).
Yani, yukarıdaki çıktı In case PID
olduğunu 915
. Şimdi çalıştırabilirsiniz:
$ 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
Üst sürecin kimliğine ( PPID
) ve yürütme komutuna bakın.
Ayrıca şunları da çalıştırabilirsiniz: $ pstree -s <PID>
sürecin ve ilgili işlemlerin görsel bir görüntüsüne.
Bizim durumumuzda, sürecin muhtemelen bir arka plan programı olduğunu görebiliriz (PPID 1'dir) - Bu durumda , işlem tarafından ortaya çıkan iş parçacığı sayısı gibi işlem hakkında daha derinlemesine bilgi almak için çalıştırmayı düşünün:
A) $ cat /proc/<PID>/status
, yetenekleri, vb. '.
B) $ systemctl status <PID>
görmek içinsystemdbelirli bir sürecin yaratılmasına neden olan birim. Hizmet kritik değilse, hizmeti durdurabilir ve devre dışı bırakabilirsiniz .
4) Yeniden Docker hizmet
Run: sudo service docker restart
.
5) Bu noktaya ulaştınız ve ..
Yalnızca sisteminizi riske atmıyorsa - sunucuyu yeniden başlatmayı düşünün.
sudo netstat -pna | grep 3000
süreci elde etmek için a çalıştırın .