क्या विंडोज कंटेनरों को लिनक्स पर होस्ट किया जा सकता है?


238

क्या लिनक्स पर विंडोज कंटेनर चलाना संभव है ? परिदृश्य .NET (पुराने नेट) में लिखे गए ऐप और लिनक्स उपयोगकर्ता पर आधारित है जो डॉकर के साथ इस पर चलना चाहता है ताकि एक लिखित एपीआई प्रदान किया जा सके ।net462localhost

मैं विंडोज के लिए डॉकर डेस्कटॉप से बीटा संस्करण का उपयोग कर रहा हूं

यदि नहीं, तो विंडोज लिनक्स कंटेनर क्यों चला सकता है और इसके विपरीत नहीं?

संपादित करें:

जैसा कि कुछ समय बीत चुका है और यह सवाल एक लोकप्रिय है। मैं यहां एक नोट जोड़ना चाहूंगा कि वर्कअराउंड का उपयोग नए नेटस्टैंडर्ड के लिए किया जाता है। इसने मुझे 4.6.2नए पुस्तकालय में रूपरेखा तैयार करने की अनुमति दी ।


4
संभव नहीं है - विंडोज कंटेनरों को बनाने और चलाने के लिए, कंटेनर समर्थन वाले विंडोज सिस्टम की आवश्यकता होती है।
ajtrichards

5
ठीक है, लेकिन फिर विंडोज लिनक्स कंटेनर क्यों चला सकता है? अब इसके लिए कोई उल्टा नहीं है?
सेबेस्टियन 506563

10
@ सेबस्टियन 506563 क्योंकि विंडोज़ पर चलने के लिए लिनक्स कंटेनरों को बनाने के लिए docker परदे के पीछे VirtualBox वर्चुअलाइजेशन चलाता है। मुझे लगता है कि सैद्धांतिक रूप से यह दूसरे तरीके से भी संभव होगा, बस डॉकटर ने इसे लागू नहीं किया।
ग्रेगरी सुवेलियन

5
VMs के साथ, प्रत्येक vm का अपना ऑपरेटिंग सिस्टम है। कंटेनरों के साथ, आधार ओएस छवि है और प्रत्येक कंटेनर शीर्ष आधार पर एक नई पतली परत जोड़ रहा है। डॉकर के इस बेस OS लाइनक्स पर आधारित है। यानी आपके विंडोज कंटेनर को आधार नहीं बनाया जा सकता क्योंकि यह अलग है। blog.risingstack.com/…
xen-dara

3
@PanagiotisKanavos कृपया जवाब दें
सेबस्टियन 506563

जवाबों:


162

Update3: 06.2019 कुछ टिप्पणियों का कहना है कि उत्तर स्पष्ट नहीं है, मैं स्पष्ट करने की कोशिश करूंगा।

टी एल; डॉ:

प्रश्न: क्या विंडोज कंटेनर लिनक्स पर चल सकते हैं?

A: नहीं। वे नहीं कर सकते। कंटेनर अंतर्निहित ऑपरेटिंग सिस्टम संसाधनों और ड्राइवरों का उपयोग कर रहे हैं, इसलिए विंडोज कंटेनर केवल विंडोज पर ही चल सकते हैं, और लिनक्स कंटेनर केवल लिनक्स पर ही चल सकते हैं।

प्रश्न: लेकिन विंडोज के लिए डॉकर के बारे में क्या? या अन्य वीएम आधारित समाधान?

A: विंडोज के लिए डॉकर आपको विंडोज पर लिनक्स कंटेनरों को चलाने की अनुमति देता है , लेकिन हुड के तहत एक लिनक्स वीएम बनाया जाता है, इसलिए अभी भी लिनक्स पर लिनक्स कंटेनर चल रहे हैं, और विंडोज पर विंडोज कंटेनर चल रहे हैं

बोनस: विंडोज पर लिनक्स डॉकटर कंटेनर चलाने के बारे में यह बहुत अच्छा लेख पढ़ें ।

प्रश्न: तो, मुझे एक .Net फ्रेमवर्क 462 ऐप के साथ क्या करना चाहिए, अगर मैं एक कंटेनर में चलना चाहूंगा?

A: यह निर्भर करता है। कई सिफारिशों के बाद:

  • यदि यह संभव है - .Net कोर पर जाएँ। चूंकि .Net कोर .Net फ्रेमवर्क की अधिकांश प्रमुख विशेषताओं के लिए समर्थन लाता है, और .Net फ्रेमवर्क 4.8 .Net फ्रेमवर्क का अंतिम संस्करण होगा
  • यदि आप .net Core में माइग्रेट नहीं कर सकते हैं - जैसा कि @Sebastian ने उल्लेख किया है - आप अपने पुस्तकालयों को .Net मानक में बदल सकते हैं, और ऐप के 2 संस्करण हैं - एक .Net फ्रेमवर्क 4.6.2 पर, और एक .Net कोर पर - यह नहीं है। हमेशा स्पष्ट रूप से, विजुअल स्टूडियो इसे बहुत अच्छी तरह से (बहु-लक्ष्यीकरण के साथ) समर्थन करता है, लेकिन कुछ आश्रितों को अतिरिक्त देखभाल की आवश्यकता हो सकती है।

  • (कम अनुशंसित) कुछ मामलों में, आप विंडोज़ कंटेनर चला सकते हैं। कुबेरनेट जैसे प्लेटफार्मों में बेहतर समर्थन के साथ, विंडोज कंटेनर अधिक से अधिक परिपक्व होते जा रहे हैं। लेकिन .Net फ्रेमवर्क कोड को चलाने में सक्षम होने के लिए, आपको अभी भी "सर्वर कोर" की आधार छवि पर चलने की आवश्यकता है, जो लगभग 1.4 जीबी है। ऐसे ही दुर्लभ मामलों में, आप अपने कोड को .Net कोर में माइग्रेट कर सकते हैं, लेकिन फिर भी 95 एमबी की छवि आकार के साथ विंडोज नैनो सर्वर पर चला सकते हैं।

इतिहास के लिए पुराने अपडेट को भी छोड़ दें

अपडेट २: ०er.२०१2 यदि आप डॉकर-फॉर-विंडोज का उपयोग कर रहे हैं, तो आप अब एक साथ दोनों विंडो और लिनक्स कंटेनर चला सकते हैं: https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- और-linux-कंटेनर-एक साथ /

बोनस: सीधे प्रश्न से संबंधित नहीं है, लेकिन अब आप न केवल लिनक्स कंटेनर को चला सकते हैं, बल्कि ऑर्केस्ट्रेटर जैसे कुबेरनेट भी: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-desktop-स्थिर चैनल /

2018 पर अपडेट किया गया:

सामान्य रूप से मूल उत्तर सही है, लेकिन कई महीने पहले, डॉक ने प्रायोगिक सुविधा LCOW ( आधिकारिक गितूब रिपॉजिटरी ) जोड़ा ।

से इस पोस्ट :

क्या विंडोज के लिए डॉकर पहले से ही लिनक्स कंटेनर नहीं चलाता है? ये सही है। विंडोज के लिए डॉकर लिनक्स या विंडोज कंटेनर चला सकता है, हाइपर- V मोबी लिनक्स वीएम के माध्यम से लिनक्स कंटेनर के लिए समर्थन के साथ (विंडोज 17.10 के लिए डॉकर के रूप में यह वीएम लिनक्सकिट पर आधारित है)।

LCOW के साथ लिनक्स कंटेनरों को चलाने के लिए सेटअप पिछले आर्किटेक्चर की तुलना में बहुत सरल है जहां हाइपर-वी लिनक्स वीएम आपके सभी कंटेनरों के साथ एक लिनक्स डॉकर डेमॉन चलाता है। LCOW के साथ, डॉकर डेमॉन एक विंडोज प्रक्रिया के रूप में चलता है (डॉकर विंडोज कंटेनरों को चलाने के दौरान भी) शीर्ष पर चल रहा है।

क्योंकि केवल एक ही डॉकटर डेमॉन है, और क्योंकि यह डेमॉन अब विंडोज पर चलता है, इसलिए मैं जल्द ही विंडोज और लिनक्स डॉकर कंटेनर को एक ही नेटवर्किंग नाम स्थान पर साइड-बाय-साइड चलाना संभव होगा । यह विंडोज पर डॉकर उपयोगकर्ताओं के लिए बहुत सारे रोमांचक विकास और उत्पादन परिदृश्यों को अनलॉक करेगा।

मूल:

जैसा कि @PanagiotisKanavos द्वारा टिप्पणियों में उल्लेख किया गया है, कंटेनर वर्चुअलाइजेशन के लिए नहीं हैं, और वे मेजबान मशीन के संसाधनों का उपयोग कर रहे हैं । नतीजतन, अब के लिए विंडोज कंटेनर लिनक्स मशीन पर "जैसा है" नहीं चल सकता है।

लेकिन - आप इसे वीएम का उपयोग करके कर सकते हैं - जैसा कि यह विंडोज़ पर काम करता है। आप अपने लिनक्स होस्ट पर विंडोज़ वीएम स्थापित कर सकते हैं, जो विंडोज़ कंटेनरों को चलाने की अनुमति देगा।

इसके साथ, IMHO ने इसे इस तरह से चलाया, PROD पर्यावरण सबसे अच्छा विचार नहीं होगा।

साथ ही, यह उत्तर अधिक विवरण प्रदान करता है।


12
जुड़ा हुआ उत्तर वास्तव में इस पर कोई विवरण प्रदान नहीं करता है - यह सिर्फ विंडोज (उलटा) पर लिनक्स कंटेनर चलाने का तरीका बताता है। विंडोज वीएम के अंदर डॉकर चलाना संभव है, लेकिन इसके लिए आपको नेस्टेड वर्चुअलाइजेशन सपोर्ट चाहिए। इसका मतलब यह VMware के साथ काम करता है, लेकिन वर्चुअलबॉक्स नहीं।
राल्फ

3
उत्तर में बहुत सारे शब्द लेकिन यह प्रश्न का उत्तर नहीं देता है।
Kyberias

2
इसके सवाल का जवाब नहीं। इसे इतना उच्च स्थान नहीं दिया जाना चाहिए
Amorphous

2
यह इस प्रश्न का उत्तर नहीं है। लिनक्स पर रनिंग डॉक विंडोज पर रनिंग डॉक से अलग है। क्यों इस एक जवाब के रूप में चिह्नित किया गया है \?
Ani

कंटेनर = कुशलता से अलग-थलग एप्लिकेशन (जो कि एक विशिष्ट OS के लिए बनाए गए थे), कम मेमोरी, डिस्क स्पेस, ओवरहेड, अधिक कुशल हार्डवेयर उपयोग VMs = केस केस का उपयोग करें .. पूरे ओएस के विभिन्न उपयोग मामलों के लिए ..., हार्डवेयर उपयोग अच्छा है (मुझे प्रत्येक OS के लिए एक अलग मशीन खरीदने की आवश्यकता नहीं है..यदि मुझे वास्तव में अपने उपयोग के मामले के लिए कई OS की आवश्यकता है), लेकिन कंटेनरों की तुलना में कठिन उपयोग उतना महान नहीं है।
जॉयेंट के

16

नहीं, आप लिनक्स पर सीधे विंडोज कंटेनर नहीं चला सकते।

लेकिन आप विंडोज पर लिनक्स चला सकते हैं।

विंडोज सर्वर / 10 ubuntu OS ( सितंबर 2016 के बाद बीटा सर्विस पैक ) की बेस इमेज के साथ पैक किया गया है । यही कारण है कि आप खिड़कियों पर लिनक्स चला सकते हैं और अन्य बुद्धिमान नहीं। यहां देखें। https://thenewstack.io/finally-linux-containers-really-will-run-windows-linuxkit/

आप ट्रे मेनू में डॉकटर पर राइट क्लिक करके OS कंटेनर लिनक्स और विंडो के बीच बदल सकते हैं।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


13
ओपी इसके बजाय लिनक्स सर्वर पर विंडोज कंटेनर चलाने के लिए देख रहा है, इसलिए यह सवाल का जवाब नहीं देता है। लेकिन मुझे ऐसे लोग पसंद नहीं हैं जो बिना टिप्पणी के हार मान लेते हैं, इसलिए मैं एक अपवोट दे रहा हूं
daisy

1
@ कार्तिकेयन वी: क्योंकि यह सवाल का जवाब नहीं है।
स्टीफन स्टीगर

मुझे यकीन नहीं है कि इसने पहले क्या कहा था लेकिन पहला बयान कहता है कि आप नहीं कर सकते हैं और दूसरा कहता है कि आप कर सकते हैं। शायद यह एक लापता या कुछ ऐसा है जो भ्रामक है।
स्टिंगजैक

9

वर्चुअलाइजेशन के विपरीत, कंटेनरीकरण एक ही मेजबान ओएस का उपयोग करता है। इसलिए लिनक्स पर निर्मित कंटेनर को खिड़कियों पर नहीं चलाया जा सकता है और इसके विपरीत।

खिड़कियों में, आपको अपने कंटेनरों के ओएस के समान ओएस होने के लिए (हाइपर-वी का उपयोग करके) सदाचार की मदद लेनी होगी और फिर आपको उसी को चलाने में सक्षम होना चाहिए।

खिड़कियों के लिए डॉकर समान ऐप है जो हाइपर-वी पर बनाया गया है और खिड़कियों पर लिनक्स डॉक कंटेनर को चलाने में मदद करता है। लेकिन जहाँ तक मुझे पता है, वहाँ कुछ भी ऐसा नहीं है जो लिनक्स पर विंडोज़ कंटेनर चलाने में मदद करता है।


9

कंटेनर OS कर्नेल का उपयोग करते हैं। विंडोज कंटेनर चलाने के लिए प्रक्रियाओं का उपयोग करता है। इसलिए सैद्धांतिक रूप से विंडोज कंटेनर लिनक्स पर नहीं चल सकते।

हालांकि वीएमस्टाइल समाधानों का उपयोग करने वाले वर्कअराउंड हैं।

मुझे यह समाधान मिला है जो मैक पर वैग्रंट और पैकर का उपयोग करता है, इसलिए इसे लिनक्स के लिए भी काम करना चाहिए: https://github.com/StefanScherer/windows-docker-machine

यह Vagrant वातावरण आपके मैकबुक पर विंडोज कंटेनरों के साथ काम करने के लिए डॉकटर मशीन बनाता है। आप मैक लिनक्स कंटेनरों और विंडोज कंटेनरों के लिए डॉकर के बीच आसानी से स्विच कर सकते हैं।

चल बाश कमान यहां छवि विवरण दर्ज करें

हेडलेस वैग्रांट बॉक्स का निर्माण

$ git clone https://github.com/StefanScherer/packer-windows
$ cd packer-windows

$ packer build --only=vmware-iso windows_2019_docker.json
$ vagrant box add windows_2019_docker windows_2019_docker_vmware.box

डॉकर मशीन बनाएं

$ git clone https://github.com/StefanScherer/windows-docker-machine
$ cd windows-docker-machine
$ vagrant up --provider vmware_fusion 2019

विंडोज कंटेनर में स्विच करें

$ eval $(docker-machine env 2019)

7

समाधान 1 - VirtualBox का उपयोग करना

के रूप में मुहम्मद Sahputra में सुझाव दिया इस पोस्ट , इसे चलाने के लिए संभव है विंडोज ओएस के अंदर VirtualBox (VBoxHeadless का उपयोग कर - ग्राफिकल इंटरफेस के बिना) के अंदर डोकर कंटेनर

इसके अलावा, VM नेटवर्क कॉन्फ़िगरेशन के अंदर एक NAT सेटअप एक पोर्ट फ़ॉरवर्डिंग कर सकता है जो आपको डॉकटर कंटेनर से आने और जाने वाले किसी भी ट्रैफ़िक को पास-थ्रू करने की सुविधा देता है। यह अंततः, एक व्यापक परिप्रेक्ष्य में, आपको लिनक्स मशीन के शीर्ष पर किसी भी विंडोज-आधारित सेवा को चलाने की अनुमति देता है।

शायद यह डॉकर कंटेनर का एक विशिष्ट उपयोग-मामला नहीं है, लेकिन यह निश्चित रूप से समस्या का एक दिलचस्प दृष्टिकोण है।


समाधान 2 - वाइन का उपयोग करना

सरल अनुप्रयोगों और शायद अधिक जटिल के लिए, आप डॉकटर कंटेनर के अंदर वाइन का उपयोग करने की कोशिश कर सकते हैं ।

यह डॉकटर हब पृष्ठ आपको अपना लक्ष्य प्राप्त करने में मदद कर सकता है।


मुझे उम्मीद है कि डॉकर जल्द ही एक देशी समाधान जारी करेंगे, जैसे कि उन्होंने कई साल पहले विंडोज पर डॉकटर-मशीन के साथ किया था।


6

आप एक वर्चुअल मशीन के अंदर विंडोज कंटेनर का उपयोग कर सकते हैं (अतिथि ओएस आवश्यकताओं से मेल खाना चाहिए - विंडोज 10 प्रो या विंडोज 2016)।

उदाहरण के लिए आप VirtualBox का उपयोग कर सकते हैं वर्चुअलबॉक्स का , बस हाइपर- V को सिस्टम / त्वरण / Paravirtualization इंटरफ़ेस के अंदर सक्षम करें।

उसके बाद यदि त्रुटि के कारण डॉकर प्रारंभ नहीं होता है, तो सेटिंग्स में "विंडोज कंटेनर पर स्विच करें" का उपयोग करें।

(यह स्वीकार किए गए उत्तर के लिए एक टिप्पणी के रूप में स्थानांतरित किया जा सकता है, लेकिन मेरे पास ऐसा करने के लिए पर्याप्त प्रतिष्ठा नहीं है)


3

जबकि विंडोज के लिए डॉकर लिनक्स कंटेनरों को चलाने में पूरी तरह सक्षम है, जबकि व्यावहारिक रूप से संभव होने पर भी, इस रूपांतरण को लागू नहीं किया जाता है।

सबसे स्पष्ट एक है, जबकि विंडोज के लिए डॉकर लिनक्स वीएम को स्वतंत्र रूप से चला सकता है, लिनक्स के लिए डॉकर को एक वीएम के अंदर चलाने के लिए विंडोज लाइसेंस की आवश्यकता होगी।

इसके अलावा, लिनक्स पूरी तरह से अनुकूलन योग्य है, इसलिए विंडोज के लिए डॉकर द्वारा उपयोग किए गए लिनक्स वीएम को केवल कुछ एमबी तक छीन लिया गया है, जिसमें कंटेनरों को चलाने के लिए केवल नंगे न्यूनतम आवश्यक है, जबकि उपलब्ध सबसे छोटा विंडोज वितरण लगभग 1.5 जीबी है। यह एक अव्यवहारिक आकार नहीं हो सकता है, लेकिन यह विंडोज समकक्ष पर लिनक्स की तुलना में बहुत अधिक बोझिल है।

हालांकि किसी के लिए लिनक्स लाइसेंस के साथ बंडल किए गए लिनक्स भिन्नता के लिए डॉकर बेचना निश्चित रूप से संभव है और लिनक्स के तहत विंडोज कंटेनरों को चलाने के लिए तैयार है (और मुझे नहीं पता कि अगर ऐसा उत्पाद मौजूद है), तो लब्बोलुआब यह है कि आप बच नहीं सकते विंडोज विक्रेता लॉक-इन मूल्य का भुगतान: पैसे और भंडारण स्थान दोनों में।


0

आप लिनक्स पर MSSQL और .NET कोर चला सकते हैं, और इसलिए आजकल लिनक्स कंटेनरों के अंदर।

देखें: https://hub.docker.com/r/microsoft/mssql-server-linux/

इसके अलावा: https://hub.docker.com/r/microsoft/dotnet/

आपके उत्तर के लिए सीधा प्रश्न, निश्चित रूप से है, जब तक कि विशेष रूप से लिनक्स के लिए संकलित कोई संस्करण नहीं।


3
यह सच है - लेकिन इसका सवाल से कोई लेना-देना नहीं है। साथ ही एमएस-एसक्यूएल सिर्फ इंजन से ज्यादा है (जो कि लिनक्स पर फिल्म्स या आर के बिना आता है - वैसे यह पूरा इंजन भी नहीं है)।
स्टीफन स्टीगर

आपको एक कदम आगे सोचना होगा ... वह क्यों पूछ रहा है? अगर वह पूछ रहा है क्योंकि वह इनमें से एक को चलाना चाहता है: वोइला।
dagelf

2
मुमकिन। लेकिन IMHO, वह शायद सवाल पूछ रहा है क्योंकि वह पहले से ही ऐसा कर चुका है, और अब उसे एसएसआरएस / एसएसएएस या कुछ वेब-फॉर्म नियंत्रण जैसे कि रिपोर्ट व्यूअर, लिनक्स पर चीजों को चलाना है।
स्टीफन स्टीगर

डॉकर छवि microsoft / dotnet .Net Core के लिए है, जो पुराने .Net 4.x से पूरी तरह से अलग है। इसलिए आप .Net Core
j123b567

3
वे समर्थन कर रहे हैं .NET Coreऔर नहीं .NET - ये दो पूरी तरह से अलग वातावरण हैं।
स्लाविक मेल्टसर

-1

विंडोज कंटेनर लिनक्स पर नहीं चल रहे हैं और आप सीधे विंडोज पर भी लिनक्स कंटेनर नहीं चला सकते हैं।


6
क्या आप थोड़ा विस्तार कर सकते हैं?
Matthieu

18
आप लाइनक्स कंटेनरों को जीत के 10
कुगेल

2
मैंने इस आदमी को वोट दिया, क्योंकि मुझे लगता है कि यह उस समय सच था। हालाँकि, अब आप Windows पर डॉकर में लिनक्स कंटेनर चला सकते हैं (डॉकर VM में MobyLinux नाम से चलता है)।
जेकज

स्वचालित रूप से विंडोज़ लिनक्स कंटेनरों को चलाने के लिए एक छोटा लिनक्स वीएम चलाता है। इसे देखने के लिए अपने हाइपर- v संसाधनों की जाँच करें
Tuğrul Karakaya
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.