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


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

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

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


121
2018-04-04 10:16


मूल


यह "बस" नहीं है bash उपयोक्ता स्थान। यह एक असली, काफी पूर्ण लिनक्स उपयोगकर्ता स्थान है, लेकिन एक्स विंडोज़ यानी पाठ के बिना ही। "बैश" कहकर टेक्स्ट-केवल सीमा को अच्छी तरह से संचारित करता है .. - MSalters
क्या मैं कुछ भुल गया? क्या यह वास्तव में वितरित किया गया था? फिलहाल मुझे केवल वाष्पवेयर के रूप में पता है। - Michael Hampton♦
मुझे लगता है कि जब तक वे इसे रिलीज़ नहीं करेंगे तब तक यह स्पष्ट नहीं होगा (AFAIK यह अभी तक विंडोज़ अंदरूनी लोगों के लिए भी उपलब्ध नहीं है) हालांकि यह ध्यान देने योग्य है कि माइक्रोसॉफ्ट और डॉकर विंडोज सर्वर 2016 के साथ रिलीज होने के लिए विंडोज़ को डॉकर को मूल रूप से लाने पर काम कर रहे हैं। - Rоry McCune
@ रोरीएमक्यून: दिलचस्प। हालांकि, के अनुसार यह डॉकर ब्लॉग प्रविष्टि अगस्त 2015 से, यह एक बंदरगाह होगा जो डॉकर को चलाने की अनुमति देता है विंडोज विंडोज़ पर छवियां, विंडोज़ पर लिनक्स छवियां नहीं। - sleske
वास्तव में यह विंडोज देशी डॉकर का उद्देश्य है। कंटेनरिसेशन की प्रकृति यह है कि आप कुछ वर्चुअलाइजेशन या (संभवतः) इस नए उपप्रणाली को जोड़कर माइक्रोसॉफ्ट विकसित कर रहे हैं, बिना अन्य कर्नेल के साथ सिस्टम चला सकते हैं - Rоry McCune


जवाब:


अभी तक (अप्रैल 2016) जवाब है:

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

तथ्यों

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

अटकलें

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

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

मौजूदा डॉकर बंदरगाहों

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

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

50
2018-04-05 07:15



अद्यतन: अब एक एमएसडीएन ब्लॉग पर विषय पर एक लेख है: लिनक्स अवलोकन के लिए विंडोज सबसिस्टम। - sleske
आज तक हाइपर-वी के साथ यह संभव है: tutorials.ubuntu.com/tutorial/... - Nick Sweeting
मैं बस इतना कम हो गया क्योंकि उच्च वोट दिया गया उत्तर अधिक उपयोगी है, तो क्या हो सकता है इसकी अटकलें, इसमें क्या शामिल है। - James


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

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

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

इन कदमों का अनुसरण करें:

cd
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.1-ce.tgz
tar -xzvf docker-*.tgz
cd docker
./docker -H tcp://0.0.0.0:2375 ps

या

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

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

mkdir ~/bin
mv ~/docker/docker ~/bin

.Bashrc में संबंधित चर जोड़ें

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

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

sudo -i
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

या अजगर पाइप का उपयोग कर

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

और बैश पूरा होने। सबसे अच्छी बात:

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

मैंने हाइपर-वी का उपयोग कर विंडोज़ के लिए डॉकर के 18.06.0-सीई-विन 5 9 (1 9 8 9) संस्करण का उपयोग करके इसका परीक्षण किया है:

~$ docker version
Client:
 Version:           18.06.0-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        0ffa825
 Built:             Wed Jul 18 19:04:39 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.0-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       0ffa825
  Built:            Wed Jul 18 19:13:46 2018
  OS/Arch:          linux/amd64
  Experimental:     true

क्लाइंट और सर्वर दोनों देखें ओएस / आर्क: लिनक्स / amd64

वॉल्यूम

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

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

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

अद्यतन करें

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

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

सादर


99
2017-07-19 22:05



हैलो @ जोएल-पियरसन, डॉकर के दो भाग हैं: इंजन और क्लाइंट। इंजन डॉकर टूलबॉक्स (वर्चुअलबॉक्स आधारित) या डॉकर फॉर विंडोज (हाइपर-वी आधारित) का उपयोग करते हुए विंडोज़ में आधिकारिक तौर पर डॉकर टीम द्वारा समर्थित है। डॉकर इंजन अभी तक बैश उपयोगकर्ता स्पेस में नहीं चला है। विंडोज़ में डॉकर क्लाइंट cmd, powerhell या cygwin में चलाया जा सकता है। यह जवाब क्या है बैश उपयोगकर्तास्थान में डॉकर क्लाइंट चलाने का तरीका है। क्यूं कर? व्यक्तिगत रूप से मैं बैश पसंद करता हूं, पूरा काम करता है। मैं मानता हूं कि सवाल डॉकर इंजन के संबंध में है, लेकिन जब मैं क्लाइंट की तलाश में था, तो मुझे यह मिला, और कई लोग वही करते हैं। - Carlos Rafael Ramirez
मैंने अभी इसका परीक्षण किया है और यह 1.12 पर मेरे लिए काम करता है :) सुपर उत्साहित अब विंडोज़ पर कुछ गंभीर विकास करने में सक्षम हैं। - Zach Russell
विंडोज पर उबंटू पर बैश में अपने निर्देशों का प्रयास किया, "डॉकर डेमन से कनेक्ट नहीं हो सकता है। क्या इस होस्ट पर डॉकर डिमन चल रहा है?"। क्या आप कुछ कदम खो रहे हैं? - mpen
फरवरी 2017 तक, यह अभी भी एकमात्र तरीका है। - hdave
जून 2017 के बाद, आप कर सकते हैं चलाएं खिड़कियों के लिए डॉकर बैश खोल से निष्पादन योग्य। डॉकर क्लाइंट स्थापित करने के बजाय आप इसका उपयोग कर सकते हैं docker.exe सीधे डॉकर सबसिस्टम से पूछताछ / बातचीत करने के लिए। हालांकि, ध्यान दें कि विंडोज़ के लिए डॉकर विंडोज चर और कॉन्फ़िगरेशन का उपयोग करेगा। - Jaime


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

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


12
2018-04-07 10:29



कूल - कोशिश करने के लिए धन्यवाद! - Hawkeye
वास्तव में यह कोशिश करने के लिए अच्छा विचार है। एक बात: क्या आप स्क्रीनशॉट का टेक्स्ट वास्तविक टेक्स्ट के रूप में जोड़ सकते हैं (उबंटू टर्मिनल कॉपी और पेस्ट का समर्थन करता है)। "असली" पाठ में कई फायदे हैं (पढ़ने में आसान, स्क्रीन पाठकों का समर्थन करता है, खोज इंजन द्वारा क्रॉल करने योग्य) - sleske
कुछ अपडेट: मैं अंतिम सालगिरह अद्यतन चलाने वाली मशीन पर पूरी तरह से डॉकर इंस्टॉल करने में सक्षम हूं। लेकिन एक कर रहा हूँ docker ps इसके साथ विफल रहता है: Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS? - kumar_harsh
ऐसा लगता है कि यह अब काम करता है: tutorials.ubuntu.com/tutorial/... - Nick Sweeting


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

कंटेनरों को चलाने के लिए डॉकर को कई चीजों की आवश्यकता होती है:

  • chroot
  • के लिए नामस्थान:
    • पीआईडी
    • उपयोगकर्ता
    • नेटवर्क
    • माउंट
    • UTS
    • भारतीय दंड संहिता

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


11
2018-04-04 10:21



असल में, विंडोज के पास उपयोगकर्ता, माउंट्स और आईपीसी के लिए नेमस्पेस हैं। सक्रिय निर्देशिका के लिए उपयोगकर्ता नामस्थान आवश्यक हैं, बहु-उपयोगकर्ता संचालन के लिए माउंट नेमस्पेस और आईपीसी नेमस्पेस आवश्यक हैं। मूल रूप से, विंडोज़ में कर्नेल ऑब्जेक्ट मैनेजर के पास पहले विंडोज एनटी रिलीज से नामस्थान होते हैं, इसलिए यह अजीब नहीं है। - MSalters
और रिमोट डेस्कटॉप सर्विसेज के साथ, सत्र ऑब्जेक्ट्स समवर्ती ऑपरेशन प्रदान करने के लिए इन नामस्थानों का सक्रिय रूप से उपयोग करते हैं। इसका मतलब यह नहीं है कि आपके पास सभी आवश्यक बुनियादी ढांचे हैं, लेकिन प्रमुख भाग वहां हैं। से संबंधित chroot, एहसास करें कि उबंटू पर्यावरण में पहले से ही WIN32 एक की तुलना में एक अलग रूट है। - MSalters
दरअसल, मुझे लगता है कि इस तरह से जवाब देना बहुत जल्दी है। जैसा कि वर्णन किया गया है स्कॉट हंसेलमैन द्वारा एक टिप्पणी, विंडोज 10 कर्नेल अब लिनक्स सिस्को स्वीकार करता है। तो सवाल यह है कि क्या डॉकर की आवश्यकता है (क्रोट और नेमस्पेस के लिए) लागू किए गए थे या नहीं। जबकि उत्तर "नहीं" होने की संभावना है, वैसे भी कोई निश्चित जानकारी नहीं है, जहां तक ​​मैं कह सकता हूं। - sleske
@sleske सही है, इस सवाल का जवाब इस समय उत्तरदायी नहीं है, और कहा जा रहा है कि विधवाओं में लिनक्स स्पेस पर काम करने वाले देवताओं के बारे में कोई वास्तविक संकेत नहीं है, "यह नहीं कर सकता"। - Ryan
मुझे विश्वास से यह बताने के लिए पर्याप्त जानकारी नहीं है कि यह जवाब पूरी तरह गलत है, लेकिन जिस तरह से इसे phrased किया गया है, वह मुझे इसकी वैधता पर थोड़ा सा संदेह देता है। विशेष रूप से बताते हुए "बैश एक साधारण उपयोगकर्ता अंतरिक्ष कार्यक्रम है और इनमें से कोई भी प्रदान नहीं कर सकता" और लिनक्स के लिए विंडो सबसिस्टम का जिक्र करते हुए "नई बैश सुविधा" के रूप में यह उत्तर देता है जैसे यह उत्तर पूरी तरह झूठी धारणा पर आधारित है कि सभी माइक्रोसॉफ्ट ने किया विंडोज़ के लिए पोर्ट बैश था। ऐसा नहीं हुआ। उन्होंने विंडोज कर्नेल के शीर्ष पर चल रहे एक संपूर्ण लिनक्स कर्नेल इंटरफ़ेस को विकसित किया: msdn.microsoft.com/en-us/commandline/wsl/about - Ajedi32


के रूप में निर्माता अद्यतन (13 जून, 2017 को सार्वजनिक रूप से जारी किया गया) आप मूल विंडोज़ निष्पादन योग्य सीधे डब्लूएसएल में चला सकते हैं। इसका मतलब है कि अगर आप पहले से ही स्थापित कर चुके हैं विंडोज के लिए डॉकर आप बस आह्वान कर सकते हैं 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 docker
docker is aliased to `"/mnt/c/Program Files/Docker/Docker/resources/bin/docker.exe"'

$ docker --version
Docker version 17.03.1-ce, build c6d412e

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


6
2018-06-22 06:02



ऐसा लगता है कि डॉकर-कंपोज़ वाईएमएल फाइलों में बैश पर्यावरण चर नहीं लेते हैं। इसके लिए कोई विचार? - Rüdiger Schulz
यह समझ में आता है, क्योंकि आप विंडोज़ का आह्वान कर रहे हैं docker बाइनरी, और बस लिनक्स खोल के माध्यम से ऐसा कर रहा है। मुझे यकीन नहीं है कि इसे पूरा करने का कोई अच्छा तरीका है या नहीं। - dimo414


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

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


5
2018-04-29 09:31





विंडोज 10 संस्करण 1607 बिल्ड 1493.10 में आप इसे उबंटू बैश पर सफलतापूर्वक इंस्टॉल कर सकते हैं, लेकिन यह काम नहीं करता है :(

एक साधारण "डॉकर संस्करण" आपको बताएगा:

Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.2.1
Git commit (client): 7c8fca2
OS/Arch (client): linux/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.18/version: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?

यदि आप "सुडो डॉकर-डी" चलाते हैं तो आपको निम्न त्रुटि मिलती है:

FATA[0000] ERROR: You are running Linux kernel version 3.4.0+, which is unsupported for running Docker. Please upgrade your kernel to 3.8+.

तो यह निश्चित रूप से बैश पक्ष से एक स्टॉपर है।

फिर भी, आप स्थापित कर सकते हैं विंडोज के लिए डॉकर और यह एक आकर्षण की तरह काम करता है, आप स्पष्ट रूप से लिनक्स सर्वर और आपको जो कुछ भी चाहिए उसे तैनात कर सकते हैं।

> docker version
Client:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 21:15:28 2016
 OS/Arch:      windows/amd64

Server:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 21:15:28 2016
 OS/Arch:      linux/amd64

3
2017-08-12 21:38