कुछ मामलों में कंटेनर को रोकने या किसी प्रक्रिया को मारने से पहले समस्या के लिए अधिक गहराई से डीबगिंग करना महत्वपूर्ण है।
नीचे दी गई चेकलिस्ट पर विचार करें:
1) आप वर्तमान डोकर लिखें वातावरण की जाँच करें
भागो docker-compose ps
।
यदि पोर्ट एक और कंटेनर द्वारा उपयोग में है, के साथ इसे रोकने docker-compose stop <service-name-in-compose-file>
या बदल कर इसे हटाने के stop
साथ rm
।
2) अपने वर्तमान कार्यक्षेत्र के बाहर चलने वाले कंटेनरों की जांच करें अपने होस्ट के तहत चलने वाले सभी कंटेनरों की सूची देखने के लिए
चलाएँ docker ps
।
यदि आप पाते हैं कि पोर्ट किसी अन्य कंटेनर द्वारा उपयोग में है, तो आप इसे रोक सकते हैं docker stop <container-id>
।
(*) क्योंकि आप मूल compose
वातावरण के दायरे में नहीं हैं - यह एक अच्छा अभ्यास है कि आप जिस कंटेनर को रोकने जा रहे हैं उसके बारे में अधिक जानकारी इकट्ठा करने के लिए डॉक निरीक्षण का उपयोग करें ।
3) जांचें कि क्या पोर्ट का उपयोग होस्ट पर चल रही अन्य प्रक्रियाओं द्वारा किया जाता है
उदाहरण के लिए यदि पोर्ट 6379 रन है:
$ 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
(*) आप lsof कमांड का भी उपयोग कर सकते हैं जो मुख्य रूप से विभिन्न प्रक्रियाओं द्वारा खोली गई फ़ाइलों के बारे में जानकारी प्राप्त करने के लिए उपयोग किया जाता है (मैं सुझाव देता हूं कि netstat
इससे पहले चल रहा है)।
तो, आउटपुट के मामले में ऊपर PID
है 915
। अब आप चला सकते हैं:
$ 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
और मूल प्रक्रिया की आईडी ( PPID
) और निष्पादन कमांड देखें।
आप यह भी चला सकते हैं: $ pstree -s <PID>
प्रक्रिया और इसके संबंधित प्रक्रियाओं के एक दृश्य प्रदर्शन के लिए।
हमारे मामले में हम देख सकते हैं कि प्रक्रिया संभवतः एक डेमॉन है (PPID 1 है) - उस मामले में चल रहा है पर विचार करें:
ए) $ cat /proc/<PID>/status
प्रक्रिया के बारे में अधिक गहराई से जानकारी प्राप्त करने के लिए, इस प्रक्रिया द्वारा थ्रेड की संख्या जैसे कि थ्रेड की संख्या, इसकी क्षमताओं आदि।
बी) $ systemctl status <PID>
को देखने के लिएsystemdइकाई जो एक विशिष्ट प्रक्रिया के निर्माण का कारण बनी। यदि सेवा महत्वपूर्ण नहीं है - तो आप सेवा को रोक और अक्षम कर सकते हैं ।
4) डॉकटर सेवा को फिर से शुरू
करें sudo service docker restart
:।
5) आप इस बिंदु पर पहुंच गए और ..
केवल अगर इसका सिस्टम आपके सिस्टम को जोखिम में नहीं डालता है - सर्वर को पुनरारंभ करने पर विचार करें।
sudo netstat -pna | grep 3000
उस प्रक्रिया को प्राप्त करने के लिए एक चलाएं जो सुन रही है।