यहां समस्या आपका दृष्टिकोण है। डॉकर में एक init सिस्टम नहीं है जैसे आप पारंपरिक सिस्टम पर उपयोग करते हैं। डॉकर क्या करता है प्रतिस्थापित करें PID 1 आपके द्वारा CMD
में निर्दिष्ट प्रक्रिया के साथ
या ENTRYPOINT
डॉकरफाइल कमांड। अभी के लिए, ENTRYPOINT
पर ध्यान न दें , क्योंकि यह आपके CMD
. को बदल देता है के साथ चलाया जाता है (सामान्यतः, यह /bin/sh -c
. है ) आपको डॉकर को CMD
के साथ अपने Dockerfile में अपनी mongod सेवा शुरू करने के लिए निर्देश देने की आवश्यकता है कमांड, जैसे:
CMD usr/bin/mongod
और जब आप अपना कंटेनर चलाते हैं, तो मोंगोड आपका पीआईडी 1 होगा। अब, आप शायद इस बिंदु पर सोच रहे हैं "लेकिन मेरे एसएसएच सर्वर के बारे में क्या?" और उत्तर है:अपने डॉकटर कंटेनरों पर SSH सर्वर न चलाएं। वहाँ हैं कुछ उपयोग के मामले जहां एक एसएसएच सर्वर चलाना ठीक है, लेकिन लगभग सभी "सामान्य" कारणों (डीबग, सी एंड सी, आदि) को आपके कंटेनर पर शेल प्राप्त करने के लिए "सर्वोत्तम अभ्यास" के साथ समाप्त कर दिया गया है:
docker exec -it myContainer /bin/bash
यह आपको आपके चल रहे कंटेनर पर एक खोल में गिरा देगा। आपके डॉकटर कंटेनर में कॉन्फ़िगरेशन और परिवर्तनों को प्रबंधित करने के लिए यहाँ अनुशंसा Ansible जैसी किसी चीज़ का उपयोग करना है। हालाँकि, याद रखें कि डॉकटर कंटेनर अल्पकालिक हैं, और आपको सेवाओं को पुनरारंभ नहीं करना चाहिए और उन पर कॉन्फ़िगरेशन स्थिति नहीं बदलनी चाहिए। यदि आपको कॉन्फ़िगरेशन परिवर्तन की आवश्यकता है, तो डॉकरफ़ाइल या कॉन्फ़िगरेशन डेटा बदलें, और फिर एक नया कंटेनर प्रारंभ करें। आपको कामयाबी मिले! यहां
Dockerizing MongoDB पर थोड़ी अधिक जानकारी है, लेकिन ध्यान रखें कि वहां वर्णित विधि ENTRYPOINT
को बदल देती है Dockerfile में, जो थोड़ा अधिक शामिल है और Dockerfiles में क्या हो रहा है, इसकी बेहतर समझ की आवश्यकता है।