क्या आप नए विंडोज 10 (उबंटू) बैश यूजरस्पेस पर मूल रूप से डॉकर चला सकते हैं?

मेरी समझ यह थी कि अन्य ओएस पर डॉकर चलाने की प्राथमिक सीमा लिनक्स नेटवर्क कंटेनर थी जिसने इसे संभव बनाया । (निश्चित रूप से मैक के लिए) ।

हाल ही में Microsoft की घोषणा की एक का बीटा Ubuntu लिनक्स उपयोगकर्ता मोड विंडोज 10 पर मूल रूप से चल रहा है । यह विंडोज़ पर ईएलएफ प्रारूप में संकलित बायनेरिज़ चला सकता है (साइगविन के विपरीत जिसे संकलन की आवश्यकता होती है । )

मेरा सवाल है: क्या आप नए विंडोज 10 (उबंटू) बैश यूजरस्पेस पर मूल रूप से डॉकर चला सकते हैं?

आप विंडोज के लिए डॉकर डेस्कटॉप को इंजन के रूप में और लिनक्स के लिए डॉकर को विंडोज पर उबंटू / डेबियन पर डब्लूएसएल में क्लाइंट के रूप में उपयोग कर सकते हैं । उन्हें टीसीपी के माध्यम से कनेक्ट करें ।

विंडोज के लिए डॉकर डेस्कटॉप स्थापित करें: https://hub.docker.com/editions/community/docker-ce-desktop-windowsयदि आप लिनक्स कंटेनरों के बजाय विंडोज कंटेनरों का उपयोग करना चाहते हैं तो दोनों प्रकार के कंटेनरों को लिनक्स डॉकर क्लाइंट द्वारा बैश यूजरस्पेस में प्रबंधित किया जा सकता है ।

संस्करण 17.03.1-सीई-विन 12 (12058) के बाद से आपको जांचना होगा टीसीपी पर डेमॉन का पर्दाफाश करें: / / लोकलहोस्ट:टीएलएस के बिना 2375 लिनक्स डॉकर क्लाइंट को टीसीपी द्वारा विंडोज डॉकर डेमॉन के साथ संचार जारी रखने की अनुमति देने के लिए

इन चरणों का पालन करें:

cdwget https://download.docker.com/linux/static/stable/`uname -m`/docker-19.03.1.tgztar -xzvf docker-*.tgzcd docker./docker -H tcp://0.0.0.0:2375 ps

या

env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps

इसे स्थायी बनाने के लिए:

mkdir ~/binmv ~/docker/docker ~/bin

करने के लिए इसी चर जोड़ें .bashrc

export DOCKER_HOST=tcp://0.0.0.0:2375export PATH=$PATH:~/bin

बेशक, आप डॉकर-कंपोज़ स्थापित कर सकते हैं

sudo -icurl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

या पायथन पाइप का उपयोग करना

sudo apt-get install python-pip bash-completionsudo pip install docker-compose

और बैश पूरा । सबसे अच्छा हिस्सा:

sudo -iapt-get install bash-completioncurl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker > /etc/bash_completion.d/dockercurl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

मैंने हाइपर-वी का उपयोग करके डॉकर डेस्कटॉप के 2.1.0.1 (37199) संस्करण का उपयोग करके इसका परीक्षण किया है:

$ docker versionClient: Docker Engine - Community Version:           19.03.1 API version:       1.40 Go version:        go1.12.5 Git commit:        74b1e89e8a Built:             Thu Jul 25 21:17:37 2019 OS/Arch:           linux/amd64 Experimental:      falseServer: Docker Engine - Community Engine:  Version:          19.03.1  API version:      1.40 (minimum version 1.12)  Go version:       go1.12.5  Git commit:       74b1e89  Built:            Thu Jul 25 21:17:52 2019  OS/Arch:          linux/amd64  Experimental:     false containerd:  Version:          v1.2.6  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb runc:  Version:          1.0.0-rc8  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f docker-init:  Version:          0.18.0  GitCommit:        fec3683Look both client and server say **OS/Arch: linux/amd64**

वॉल्यूम

वॉल्यूम जोड़ते समय ध्यान रखें । पथ C:\dir के रूप में दिखाई देगा /mnt/c/dir डब्ल्यूएसएल और एएस पर /c/dir/ डॉकर इंजन द्वारा । आप इसे स्थायी रूप से दूर कर सकते हैं:

sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"

डब्लूएसएल में परिवर्तन करने के बाद आपको डब्लूएसएल से बाहर निकलना और पुनः लोड करना होगा । कॉन्फ करें ताकि डब्लूएसएल लॉन्च पर आपके परिवर्तनों में पढ़ सके ।

अद्यतन करें

से: विंडोज 10 संस्करण 1803 में कमांड लाइन के लिए नया क्या है

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

अद्यतन करें

यह स्क्रिप्ट और यूनिक्स सॉकेट का उपयोग इसमें शामिल था Pengwin'एस pengwin-सेटअप.

सादर

अभी (अप्रैल 2016) के रूप में जवाब है:

हम अभी तक नहीं जानते (लेकिन शायद नहीं) ।

तथ्यों

  • विंडोज 10 अब विभिन्न प्रकार के लिनक्स प्रोग्राम चला सकता है (बीच मेंउन्हें बैश शेल और विभिन्न टेक्स्ट यूटिलिटीज) । ये पोर्ट नहीं हैं (यानी पुन: संकलित संस्करण, जैसे उदाहरण के लिए Cygwin), वे वही हैं एल्फ बायनेरिज़ यह एक विशिष्ट लिनक्स सिस्टम पर चलता है । Inthis मामले में, वे से लिया गया है और Ubuntu.
  • इसे संभव बनाने के लिए, विंडोज 10 को लिनक्स सिस्टम कॉल (सिस्कॉल) को स्वीकार करने और एल्फ बायनेरिज़ को लोड करने और चलाने में सक्षम होने के लिए संशोधित किया गया था (टिप्पणी द्वारा स्कॉट Hanselman). इसका मतलब है कि अनमॉडिफाइड लिनक्स निष्पादन योग्य चलाए जा सकते हैं, वे आवश्यकतानुसार अपने अनमॉडिफाइड साझा पुस्तकालयों को लोड करेंगे, और विंडोज उन्हें विंडोज प्रक्रियाओं के रूप में चलाएगा ।
  • जब भी ऐसा लिनक्स प्रोग्राम कर्नेल के साथ इंटरैक्ट करना चाहता है, तो यह एक सिस्टम कॉल जारी करता है (या लाइब्रेरी को इसे करने देता है) । यह (संभवतः) लिनक्स पर चलने का एकमात्र अंतर है: लिनक्स पर चलते समय, लिनक्स कर्नेल थीसिस कॉल को संभालता है; विंडोज 10 पर, विंडोज 10 कर्नेल इसके बजाय करता है ।

अटकलें

तो सवाल यह है कि क्या डॉकटर की जरूरत वाले सिस्कॉल (चेरोट और नेमस्पेस के लिए, अन्य चीजों के साथ) लागू किए गए थे या नहीं । इसका उत्तर यह है कि "नहीं"होने की संभावना है । डॉकर को प्रक्रिया और संसाधन प्रबंधन, और प्रक्रिया अलगाव के लिए काफी परिष्कृत (और लिनक्स-विशिष्ट) कार्यक्षमता की आवश्यकता होती है । जबकि यह शायद संभव दोहराने के लिए यह सब विंडोज पर, यह होगा काम का एक बहुत कुछ के बाद से, और इस के लक्ष्य Windows सुविधा के लिए लगता है हो सकता है लिनक्स चल यूजरस्पेस कार्यक्रम के साथ, यह संभावना नहीं लगता है वे सब काम किया है (और यह रखा रहस्य).

हालाँकि,जहाँ तक मैं बता सकता हूँ, वहाँ कोई निश्चित जानकारी नहीं है ।

मौजूदा डॉकर पोर्ट

बेशक, अगर माइक्रोसॉफ्ट फैसला करता है कि वे विंडोज 10 में डॉकर समर्थन चाहते हैं, तो वे शायद इसे पेश करने में सक्षम होंगे । डॉकर को एक अलग कर्नेल में पोर्ट करने के लिए कुछ मिसाल है:

  • एक है डोकर पोर्ट के लिए FreeBSD. इसे "प्रायोगिक" लेबल किया गया है, लेकिन सिद्धांत रूप में काम करने लगता है । यह डॉकर रिपॉजिटरी से अनमॉडिफाइड डॉकर कंटेनर का उपयोग कर सकता है, जिसका अर्थ है कि यह वास्तव में छवियों के लिए लिनक्स जैसा होस्ट वातावरण प्रदान करता है ।
  • डॉकर को विंडोज (विशेष रूप से, विंडोज सर्वर 2016) में पोर्ट करने के लिए एक परियोजना चल रही है-इसे देखें डॉकर ब्लॉग प्रविष्टि अगस्त 2015 से । हालांकि, ऊपर दिए गए फ्रीबीएसडी पोर्ट के विपरीत, यह एक पोर्ट होगा जो डॉकर को विंडोज पर विंडोज इमेज चलाने की अनुमति देता है, न कि विंडोज पर लिनक्स इमेज । इसे इंगित करने के लिए रोरी मैकक्यून को धन्यवाद ।

नहीं, यह संभव नहीं है ।

कंटेनर चलाने के लिए डॉकर को कई चीजों की जरूरत होती है:

  • chroot
  • के लिए नामस्थान:
    • पीआईडी
    • उपयोगकर्ता
    • नेटवर्क
    • Mounts
    • यूटीएस
    • आईपीसी

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

पहला अंदरूनी पूर्वावलोकन कल जारी किया गया था । मैंने डॉकर स्थापित करने का प्रयास किया है लेकिन यह निम्नलिखित के साथ विफल रहता है:

तो यह दिखाई देगा, कि पहले पूर्वावलोकन के लिए यह वर्तमान में काम नहीं करता है । हालांकि जैसा कि कई लोगों ने अनुमान लगाया है, यह भविष्य के रिलीज में काम कर सकता है ।

के रूप में निर्माता अद्यतन (13 जून, 2017 को सार्वजनिक रूप से जारी) आप डब्लूएसएल में सीधे देशी विंडोज निष्पादन योग्य चला सकते हैं । इसका मतलब है अगर आपने पहले ही इंस्टॉल कर लिया है डोकर के लिए Windows आप बस आह्वान कर सकते हैं docker बायनेरिज़ के तहत स्थापित C:\Program Files. चूंकि वे अंत में .exe सबसे आसान विकल्प उपनाम बनाना है । आपके में निम्नलिखित की तरह कुछ .bashrc काम करना चाहिए:

DOCKER_BIN='/mnt/c/Program Files/Docker/Docker/resources/bin'for f in "$DOCKER_BIN"/*; do  alias "$(basename "$f" | sed 's/.exe$//')"'="'"$f"'"'done

यह सभी फाइलों के लिए उपनाम बनाता है DOCKER_BIN निर्देशिका:

$ type dockerdocker is aliased to `"/mnt/c/Program Files/Docker/Docker/resources/bin/docker.exe"'$ docker --versionDocker version 17.03.1-ce, build c6d412e

एक चेतावनी: आपको एक त्रुटि संदेश मिलेगा जैसे "वर्तमान कार्यशील निर्देशिका का अनुवाद करने में असमर्थ"यदि लिनक्स निर्देशिका से चलाया जाता है । बस cd एक Windows निर्देशिका (उदा. /mnt/c/Users/YourUsername) और आपको अच्छा होना चाहिए ।