यह देखने के लिए कि कंटेनर के रुकने पर क्या हो रहा था और "मौजूद" मोड में जाने के लिए डॉकर लॉग की कोशिश करें और जांचें।
यह भी देखें कि क्या वॉल्यूम के लिए पूर्ण पथ निर्दिष्ट करने से मदद मिलेगी:
docker run -p 27017:27017 -v /home/<user>/data:/data/db ...
ओपी जोड़ता है:
docker logs mongo
exception in initAndListen: 98
Unable to create/open lock file: /data/db/mongod.lock
errno:13 Permission denied
Is a mongod instance already running?
terminating 2016-02-15T06:19:17.638+0000
I CONTROL [initandlisten] dbexit: rc: 100
एक त्रुटि:13 वह मुद्दा है जो 30 के बारे में है।
यह टिप्पणी जोड़ता है:
<ब्लॉकक्वॉट>यह एक फ़ाइल स्वामित्व/अनुमति समस्या है (इस डॉकर छवि से संबंधित नहीं), या तो वीबी के साथ boot2docker या वीबी के साथ एक योनि बॉक्स का उपयोग कर रहा है।
फिर भी, मैं स्वामित्व को हैक करने में कामयाब रहा, boot2docker के अंदर /उपयोगकर्ता साझा किए गए वॉल्यूम को uid 999 और gid 999 (जो कि mongo docker छवि का उपयोग करता है) और इसे शुरू करने के लिए मिला:
$ boot2docker ssh
$ sudo umount /Users
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users
लेकिन... फाइल सिस्टम प्रकार समर्थित नहीं होने के कारण मोंगॉड क्रैश (mmap vboxsf पर काम नहीं कर रहा है)
तो वास्तविक समाधान एक DVC:डेटा वॉल्यूम कंटेनर का प्रयास करना होगा , क्योंकि अभी मोंगोडब दस्तावेज़ में उल्लेख है:
<ब्लॉकक्वॉट>
MongoDB को एक फाइल सिस्टम की आवश्यकता होती है जो fsync()
. का समर्थन करता हो निर्देशिकाओं पर।
उदाहरण के लिए, एचजीएफएस और वर्चुअल बॉक्स के साझा फ़ोल्डर इस ऑपरेशन का समर्थन नहीं करते हैं।
तो:
<ब्लॉकक्वॉट>वर्चुअलबॉक्स साझा किए गए फ़ोल्डरों के काम करने के तरीके के कारण OSX पर माउंट करना MongoDB के लिए काम नहीं करेगा।
DVC (डेटा वॉल्यूम कंटेनर) के लिए, docker volume create
आज़माएं :
docker volume create mongodbdata
फिर इसे इस तरह इस्तेमाल करें:
docker run -p 27017:27017 -v mongodbdata:/data/db ...
और देखें कि क्या यह बेहतर काम करता है।
जैसा कि मैंने टिप्पणियों में उल्लेख किया है:
एक docker volume inspect mongodbdata
(देखें docker volume inspect
) आपको अपना रास्ता देगा (कि आप जरूरत पड़ने पर बैकअप ले सकते हैं)