कमांड निर्दिष्ट किए बिना, मैं डॉकर कंटेनर में एक पूर्ण ओएस कैसे चला सकता हूं?

मैं पीछा कर रहा हूँ डोकर, CoreOS प्रलेखन और इसमें कमांड के साथ कंटेनर शुरू करने का उल्लेख है जैसे:

docker run someImageName /bin/somebinary

कहाँ someImageName एक छवि है । जब / बिन/कुछ बिन बाहर निकलता है, तो छवि अब नहीं चल रही होगी ।

मैं बस एक छवि चलाना चाहूंगा, बिना किसी बायनेरिज़ को चलाने के लिए निर्दिष्ट किए । इसके बजाय, मैं बस सेवाओं (जैसे, सिस्टमड / सिस्विनिट) को चलाना चाहता हूं जो सामान्य रूप से छवियों ओएस के अंदर चलते हैं.

यह सबसे आम बात की तरह लगता है कि कोई भी कभी भी डॉकर के साथ करना चाहेगा, लेकिन कमांड रिटर्न के बिना एक छवि चलाने की कोशिश कर रहा है:

2014/02/05 14:49:19 Error: create: No command specified

मैं एक डॉकर कंटेनर कैसे शुरू कर सकता हूं और एक कमांड निर्दिष्ट करने के बजाय एक पूर्ण ओएस चला सकता हूं?

जैसा कि यहां प्रलेखित है, आप बस चलाते हैं /sbin/init एकल उपयोगकर्ता से बहु-उपयोगकर्ता मोड में किसी भी अन्य यूनिक्स बूटिंग की तरह कमांड के रूप में ।

https://stackoverflow.com/questions/19332662/start-full-container-in-docker

कंटेनर पूर्ण विकसित ओएस हो सकते हैं, उन्हें बस होना नहीं है (न तो उस मामले के लिए वीएम करते हैं, यह कॉन्फ़िगर और प्रबंधित करने के लिए अधिक जटिल है) ।

मैं कहूंगा कि डॉकर का पूरा बिंदु एप्लिकेशन कंटेनरों को आसान बनाना है, ताकि आपको केवल एक ऐप को कॉन्फ़िगर करना पड़े, न कि पूरे ओएस को ।

डॉकर प्रबंधन और तैनाती के लिए एक प्रणाली है आवेदन कंटेनर, नहीं ऑपरेटिंग सिस्टम कंटेनर। ऐसा लगता है जैसे आप एक ऑपरेटिंग सिस्टम को बूट करने के साथ एक डॉकर कंटेनर चलाने का विरोध कर रहे हैं ।

आपके डॉकर कंटेनर एकल-उद्देश्य वाले होने चाहिए, बहुत संकीर्ण रूप से स्कोप्ड एप्लिकेशन जिन्हें एक कमांड के साथ शुरू किया जा सकता है । यदि आप इससे अधिक जटिल कुछ ढूंढ रहे हैं, तो डॉकर वह समाधान नहीं है जिसे आप ढूंढ रहे हैं । उस मामले में, बाहर की जाँच करें KVM, ESXi, OpenVZ, LXD आदि।

यदि आप केवल यह खोज रहे हैं कि आप डिफ़ॉल्ट कैसे निर्दिष्ट कर सकते हैं CMD और ENTRYPOINT अपने कंटेनरों के लिए, आप ऐसा कर सकते हैं बिल्ड-टाइम का उपयोग कर एक Dockerfile.

एक कंटेनर में एक पूर्ण ऑपरेटिंग सिस्टम चलाने के लिए निम्नलिखित डॉकरफाइल बनाएं:

FROM fedora:25CMD /sbin/init

फिर कंटेनर बनाएं और शुरू करें और इसके अंदर चल रही सेवाओं का पता लगाने के लिए इसके अंदर एक शेल दर्ज करें:

docker build -t os .docker run -d --privileged --name os osdocker exec -it os bash

कंटेनर के अंदर पूर्ण सिस्टमड सेवाएं। सुंदर।

docker pull ubuntu

बस एक ही छवि से जितनी बार आवश्यक हो उतनी बार चलाएं । नए कंटेनर बनाए जाएंगे और फिर उन्हें शुरू किया जा सकता है और प्रत्येक को अपने स्वयं के कॉन्फ़िगरेशन को सहेजने से रोका जा सकता है । आपकी सुविधा के लिए अपने प्रत्येक कंटेनर को "--नाम"के साथ एक नाम देना बेहतर होगा ।

एफआई:

docker run --name MyContainer1 <ubuntu image>docker run --name MyContainer2 <ubuntu image>docker run --name MyContainer3 <ubuntu image>

यह बात है ।

$ docker psCONTAINER ID        IMAGE            CREATED          STATUS               NAMESa7e789711e62        67759a80360c   12 hours ago     Up 2 minutes         MyContainer187ae9c5c3f84        67759a80360c   12 hours ago     Up About a minute    MyContainer2c1524520d864        67759a80360c   12 hours ago     Up About a minute    MyContainer3

उसके बाद आपके पास अपने कंटेनर हमेशा के लिए बनाए गए हैं और आप उन्हें वीएम की तरह शुरू और रोक सकते हैं ।

docker start MyContainer1

कंटेनर में पाने के लिए और आप क्या करना चाहते हैं:

docker exec -it MyContainer1 bash

@ फ्रेडथेमैजिकवंडरडॉग काफी नहीं है, हालांकि जवाब एक ही है ।