होम·एरर संदेश

docker · Docker

संदेश

Bind for 0.0.0.0:8080 failed: port is already allocated

इसका मतलब

आपने -p से host का वह port माँगा, और उसे कोई दूसरा container या प्रक्रिया पहले से पकड़े है। अधिकतर मामलों में पहले --rm के बिना चलाया गया container रुका हुआ या चलता हुआ वहीं पड़ा है, या compose अब भी कोई पुराना container थामे है। docker ps --filter publish=8080 सीधे उस container की ओर इशारा करता है जो उसे प्रकाशित कर रहा है; और अगर वह container न होकर host का कोई सामान्य कार्यक्रम निकले तो lsof -i :8080 उसे ढूँढ़ लेता है। केवल host की तरफ़ बदलना, जैसे -p 8081:80, आपको आगे बढ़ा देता है, पर पुराना container वहीं छोड़ देने का मतलब अगली बार भी वही टकराव है।

सुधार

docker ps --filter publish=8080
कौन देता है
docker
Docker
12

docker की त्रुटियाँ तभी पढ़ी जाती हैं जब आप उन्हें परत के हिसाब से बाँट लें — client का daemon तक न पहुँचना, registry का मना करना, build के दौरान किसी RUN का विफल होना, और container का चालू होते ही मर जाना — ये चार अलग समस्याएँ हैं; और build तथा चलने की परतों में पंक्ति स्वयं कारण नहीं होती: कारण उस आदेश के output में होता है जो भीतर चल रहा था, और हर उपाय की क़ीमत भी परत के अनुसार बदलती है।

एरर संदेश कैसे पढ़ें

  • पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
  • फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
  • संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
  • वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
  • कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।

अक्सर पूछे जाने वाले सवाल

Q. “Bind for 0.0.0.0:8080 failed: port is already allocated” का क्या मतलब है?

आपने -p से host का वह port माँगा, और उसे कोई दूसरा container या प्रक्रिया पहले से पकड़े है। अधिकतर मामलों में पहले --rm के बिना चलाया गया container रुका हुआ या चलता हुआ वहीं पड़ा है, या compose अब भी कोई पुराना container थामे है। docker ps --filter publish=8080 सीधे उस container की ओर इशारा करता है जो उसे प्रकाशित कर रहा है; और अगर वह container न होकर host का कोई सामान्य कार्यक्रम निकले तो lsof -i :8080 उसे ढूँढ़ लेता है। केवल host की तरफ़ बदलना, जैसे -p 8081:80, आपको आगे बढ़ा देता है, पर पुराना container वहीं छोड़ देने का मतलब अगली बार भी वही टकराव है।

Q. इसे कैसे ठीक करें?

docker ps --filter publish=8080 — चलाने से पहले ऊपर देख लें कि यह कमांड क्या फेंक देता है।

Q. यह कौन-सा औज़ार देता है?

docker। यह Docker में आता है, और संदेश 8 शब्दों का है।

साथ आने वाले एरर