डॉक मशीन में स्थानीय वॉल्यूम कैसे माउंट करें


85

मैं docker- रचना के साथ docker- मशीन का उपयोग करने की कोशिश कर रहा हूँ। फ़ाइल docker-compose.yml की परिभाषाएँ इस प्रकार हैं:

web:
  build: .
  command: ./run_web.sh
  volumes:
    - .:/app
  ports:
    - "8000:8000"
  links:
    - db:db
    - rabbitmq:rabbit
    - redis:redis

जब docker-compose up -dतक सभी अच्छी तरह से चलते हैं जब तक कि कमांड को निष्पादित करने का प्रयास नहीं किया जाता है और एक त्रुटि उत्पन्न होती है:

कंटेनर शुरू नहीं कर सकते b58e2dfa503b696417c1c3f49e2714086d4e9999bd71915a53502cb6ef43936d: [8] सिस्टम त्रुटि: निष्पादित करें: "./run_web.sh": stat ./run_web.sh: ऐसी कोई फ़ाइल नहीं है।

दूरस्थ मशीन पर स्थानीय वॉल्यूम को माउंट नहीं किया जाता है। व्हाट्सएप कोड के साथ स्थानीय संस्करणों को माउंट करने के लिए अनुशंसित रणनीति क्या है?


परियोजना की संरचना और docker-compose.yml इस ट्यूटोरियल Syncano.com/… के
jdcaballerov

1
यह उन डॉक्यू-कम्पोज़ डॉक्यूमेंट्स में होना चाहिए, जो उन लोगों के लिए एक मददगार संकेत हैं, जिन्हें स्थानीय स्तर पर कंपोज़ करने के लिए शुरू किया जा सकता है। मेरे डब्ल्यूटीएफ क्षणों के घंटे बचाने के लिए मुझे पता लगाने की कोशिश कर रहा होगा कि क्यों मेरी फ़ाइल पथ गलत था या नहीं मिला। नहीं मैं सिर्फ मूर्खता महसूस करता हूं।
टिम्ब्रोएन

जवाबों:


93

डॉकर-मशीन उपयोगकर्ताओं की निर्देशिका को स्वचालित करता है ... लेकिन कभी-कभी यह पर्याप्त नहीं होता है।

मैं डॉकटर 1.6 के बारे में नहीं जानता, लेकिन 1.8 में आप डॉकटर-मशीन में एक अतिरिक्त माउंट जोड़ सकते हैं

वर्चुअल मशीन माउंट प्वाइंट (भाग 1) जोड़ें

सीएलआई : (केवल काम करता है जब मशीन बंद हो जाती है)

VBoxManage sharedfolder add <machine name/id> --name <mount_name> --hostpath <host_dir> --automount

तो खिड़कियों में एक उदाहरण होगा

/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe sharedfolder add default --name e --hostpath 'e:\' --automount

जीयूआई : (मशीन को रोकने की आवश्यकता नहीं है)

  1. "Oracle VM VirtualBox प्रबंधक" शुरू करें
  2. राइट-क्लिक <machine name>(डिफ़ॉल्ट)
  3. समायोजन...
  4. सांझे फ़ोल्डर
  5. दाईं ओर फ़ोल्डर + चिह्न (शेयर जोड़ें)
  6. फ़ोल्डर पथ: <host dir>(ई :)
  7. फ़ोल्डर का नाम: <mount name>(ई)
  8. "ऑटो-माउंट" और "स्थायी बनाएं" पर जांच करें (केवल यदि आप चाहें तो पढ़ें ...) (ऑटो-माउंट वर्तमान में व्यर्थ की तरह है ...)

Boot2docker में बढ़ते (भाग 2)

मैन्युअल रूप से boot2docker में माउंट करें :

  1. लॉग इन करने के कई तरीके हैं, "ओरेकल वीएम वर्चुअलबॉक्स मैनेजर" में "शो" का उपयोग करें, या आईपी पते docker-machine ip default, आदि द्वारा docker में ssh / पोटीन ...
  2. sudo mkdir -p <local_dir>
  3. sudo mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` <mount_name> <local_dir>

लेकिन यह केवल अच्छा है जब तक आप मशीन को पुनरारंभ नहीं करते हैं, और तब माउंट खो जाता है ...

Boot2docker में एक ऑटोमाउंट जोड़ना :

मशीन में लॉग इन करते समय

  1. संपादित करें / बनाएं (रूट के रूप में) /mnt/sda1/var/lib/boot2docker/bootlocal.sh, sda1 आपके लिए अलग हो सकता है ...
  2. जोड़ना

    mkdir -p <local_dir>
    mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` <mount_name> <local_dir>
    

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


पुरानी विधि: कम अनुशंसित है , लेकिन एक विकल्प के रूप में छोड़ दिया गया है

  • संपादित करें (रूट के रूप में) /mnt/sda1/var/lib/boot2docker/profile, sda1 आपके लिए अलग हो सकता है ...
  • जोड़ना

    add_mount() {
      if ! grep -q "try_mount_share $1 $2" /etc/rc.d/automount-shares ; then
        echo "try_mount_share $1 $2" >> /etc/rc.d/automount-shares
      fi
    }
    
    add_mount <local dir> <mount name>
    

एक के रूप में अंतिम उपाय , आप थोड़ा और अधिक कठिन विकल्प ले सकते हैं, और आप बस बूट छवि को संशोधित कर सकते हैं।

  • git -c core.autocrlf=false clone https://github.com/boot2docker/boot2docker.git
  • cd boot2docker
  • git -c core.autocrlf=false checkout v1.8.1 # अपने उपयुक्त संस्करण के लिए
  • संपादित करें rootfs/etc/rc.d/automount-shares
  • try_mount_share <local_dir> <mount_name>अंत में फाई से ठीक पहले लाइन जोड़ें । उदाहरण के लिए

    try_mount_share /e e
    

    बस सुनिश्चित करें कि ओएस / बिन, आदि जैसे ओएस की जरूरत के लिए कुछ भी सेट न करें ...

  • docker build -t boot2docker . # यह पहली बार एक घंटे के बारे में ले जाएगा :(
  • docker run --rm boot2docker > boot2docker.iso
  • पुराने boot2docker.iso का बैकअप लें और अपने नए को उसकी जगह कॉपी करें, ~ / .docker / मशीन / / में

यह काम करता है, यह सिर्फ लंबा और जटिल है

docker संस्करण 1.8.1, docker- मशीन संस्करण 0.4.0


किसी को भी इस के साथ समस्या होने के लिए, मुझे पूरा यकीन है कि मुझे स्थानीय रास्तों को डॉकटर-मशीन से मेल खाना है। यह भी कहा जाता है कि नियमित रूप से डॉक करते समय वॉल्यूम को बढ़ाने में सफल होना प्रतीत होता है - निश्चित नहीं कि क्यों।
२०:१५ पर स्पाइडेन

3
यहां वर्णित समाधान के लिए एक स्क्रिप्ट बनाई गई। नवीनतम डॉकटर 1.10 और डॉकटर-मशीन 0.6.0 gist.github.com/cristobal/fcb0987871d7e1f7449e पर काम करता है
cristobal

विभिन्न संसाधनों का उपयोग करने के बारे में बात करते हैं /mnt/sda1/var/lib/boot2docker/profile, क्या आप बता सकते हैं कि आपने उपयोग करने के लिए क्यों स्विच किया /mnt/sda1/var/lib/boot2docker/bootlocal.sh? इसके अलावा, इस पाठ के माध्यम से प्रहार करने से आपके उत्तर की पठनीयता में कोई योगदान नहीं होता;;
फोरेज

1
@ प्रारूप बिंदु मेरे स्वरूपण के बारे में लिया गया :)। मुझे हाथ से याद नहीं है कि मैं bootlocal.shविधि का सुझाव क्यों देता हूं । मैं बस इतना कह सकता हूं कि यह एक माउंट कमांड का उपयोग करने के लिए क्लीनर जैसा दिखता है जैसे मैंने bootlocal.shप्रोफाइल में किया था। इसके अलावा, आमतौर पर, मेरा मानना ​​है कि इसे profileकई बार चलाया जा सकता है, और माउंट को केवल एक बार चलाने की आवश्यकता होती है, इसलिए यह अधिक समझ में आता है। लेकिन दोनों काम कर सकते हैं।
एंडी

इसे प्यार करना! धन्यवाद!
कोरबानी

28

इस मुद्दे में भी भाग गया और ऐसा लग रहा है कि डॉकटर-मशीन का उपयोग करते समय स्थानीय वॉल्यूम को माउंट नहीं किया गया है। एक हैक समाधान करने के लिए है

  1. Docker- मशीन उदाहरण की वर्तमान कार्यशील निर्देशिका प्राप्त करें docker-machine ssh <name> pwd

  2. rsyncदूरस्थ सिस्टम में फ़ोल्डर की प्रतिलिपि बनाने के लिए कमांड लाइन टूल का उपयोग करें

    rsync -avzhe ssh --progress <name_of_folder> username@remote_ip:<result _of_pwd_from_1>.
    

डिफ़ॉल्ट pwd / root है, इसलिए ऊपर का कमांड होगा rsync -avzhe ssh --progress <name_of_folder> username@remote_ip:/root

NB: आपको रिमोट सिस्टम के लिए पासवर्ड की आपूर्ति करने की आवश्यकता होगी। आप दूरस्थ सिस्टम में ssh करके और पासवर्ड बनाकर जल्दी से बना सकते हैं।

  1. मात्रा अपने में बिंदु माउंट परिवर्तन docker-compose.ymlसे फाइल .:/appकरने के लिए/root/<name_of_folder>:/app

  2. Daud docker-compose up -d

एनबी जब परिवर्तन स्थानीय स्तर पर किए जाते हैं, तो rsyncरिमोट सिस्टम में बदलावों को आगे बढ़ाने के लिए पुनर्मिलन करना न भूलें ।

यह सही नहीं है, लेकिन यह काम करता है। एक समस्या चल रही है https://github.com/docker/machine/issues/179

अन्य प्रोजेक्ट जो इसे हल करने का प्रयास करते हैं, उनमें docker-rsync शामिल हैं


rsync को रिमोट सिस्टम पर स्थापित करने की आवश्यकता है, ऐसा लगता है कि r sh: rsync: rsync नहीं मिला: कनेक्शन अनपेक्षित रूप से बंद (0 बाइट्स अब तक प्राप्त) [प्रेषक] rsync त्रुटि: दूरस्थ कमांड नहीं मिला (कोड 127) at / SourcePache / rsync / rsync -45 / rsync / io.c (453) [प्रेषक = 2.6.9] `आपको यह काम करने के लिए कैसे मिला?
क्रिंकर

1
rsync को आपके स्थानीय सिस्टम पर संस्थापित करने की आवश्यकता है
gbozee

इन चरणों का उपयोग करने से मेरे डिजिटल होस्ट को पूरी तरह से बंद कर दिया जाता है .. फाइलें ठीक से स्थानांतरित हो जाती हैं, लेकिन जब मैं होस्ट को डॉकटर-मशीन के साथ फिर से जोड़ने की कोशिश करता हूं, तो मुझे मशीन exit status 255को पूरी तरह से फिर से बनाना पड़ता है।
dsifford

1
यहां वर्णित समाधान के लिए एक स्क्रिप्ट बनाई गई। नवीनतम docker 1.10और docker-machine 0.6.0 gist.github.com/cristobal/fcb0987871d7e1f7449e
cristobal

@ क्रस्टोबॉल ऐसा लगता है जैसे आपने आरएसयूनिक सॉल्यूशन नहीं, माउंट सॉल्यूशन को स्क्रिप्ट किया है?
एंडी

14

फिलहाल मैं वास्तव में मशीनों पर वॉल्यूम को माउंट करने का कोई तरीका नहीं देख सकता हूं, इसलिए अब तक का दृष्टिकोण किसी भी तरह से उन फाइलों को कॉपी या सिंक करना होगा जिनकी आपको मशीन में जरूरत है।

कर रहे हैं बातचीत कैसे डोकर-मशीन के GitHub रेपो पर इस समस्या को हल करने के लिए पर। किसी व्यक्ति के द्वारा किए गए पुल अनुरोध को लागू करने SCP डोकर-मशीन पर और यह पहले से ही, गुरु पर विलय कर दिया है, तो यह बहुत संभव है कि अगली फिल्म यह शामिल होंगे है।

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

web:
  build: .
  command: git clone https://github.com/my/repo.git; ./repo/run_web.sh
  volumes:
    - .:/app
  ports:
    - "8000:8000"
  links:
    - db:db
    - rabbitmq:rabbit
    - redis:redis

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

docker-machine scp -r . dev:/home/docker/project

यह सामान्य रूप है:

docker-machine scp [machine:][path] [machine:][path]

तो आप मशीनों से और बीच की फाइलों को कॉपी कर सकते हैं।

चीयर्स! 1



2
यह विधि बहुत धीमी है :(
फ्रैंक जेवसेव

5

अक्टूबर 2017 से डॉक-मशीन के लिए एक नया कमांड है जो चाल करता है, लेकिन सुनिश्चित करें कि इसे निष्पादित करने से पहले निर्देशिका में कुछ भी नहीं है, अन्यथा यह खो सकता है:

docker-machine mount <machine-name>:<guest-path> <host-path>

अधिक जानकारी के लिए डॉक्स देखें: https://docs.docker.com/machine/reference/mount/

परिवर्तन के साथ पीआर: https://github.com/docker/machine/pull/4018


1
बस अविश्वसनीय रूप से, डॉकर मशीन प्रलेखन (जो आपने लिंक किया है) से, यह है - शाब्दिक रूप से - यह जानना असंभव है कि आदेश में आदेश ...:<guest-path> <host-path>(आसपास के अन्य तरीके के बजाय) है। कुछ सरल और महत्वपूर्ण के रूप में प्रलेखन में ध्यान दें करने के लिए ... बस नहीं है!
दान निसेनबौम

मुझे लगता है कि यह बहुत स्पष्ट नहीं है, आप सही हैं। यह कमांड की सूची से अनुमान लगाया जाना है
जॉर्ज

यह ट्रिक करता है, लेकिन दूसरे तरीके से। यह आपके स्थानीय मशीन पर डोकर-मशीन को माउंट करने की अनुमति देता है। दुर्भाग्य से यह दूसरे तरीके की अनुमति नहीं देता है :(
ravenwing

4

यदि आप docker- मशीन के साथ rsync विकल्प चुनते हैं, तो आप इसे docker-machine ssh <machinename>इस तरह कमांड के साथ जोड़ सकते हैं :

rsync -rvz --rsh='docker-machine ssh <machinename>' --progress <local_directory_to_sync_to> :<host_directory_to_sync_to>

यह rsync के इस कमांड प्रारूप का उपयोग करता है, HOSTखाली छोड़ कर :

rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

( http://linuxcommand.org/man_pages/rsync1.html )


1

अंत में यह पता लगाया कि विंडोज डॉकटर टूलबॉक्स को v1.12.5 में कैसे अपग्रेड किया जाए Oracle VM VirtualBoxऔर प्रबंधक में एक साझा फ़ोल्डर जोड़कर और पथ रूपांतरण को अक्षम करके मेरे वॉल्यूम को काम करते रहें । यदि आपके पास विंडोज 10+ है तो आप विंडोज के लिए नए डॉकर का उपयोग करने के लिए सर्वश्रेष्ठ हैं।

1 अपग्रेड दर्द:

  1. पहले VirtualBox को अनइंस्टॉल करें।
    • हां जो एंड्रॉइड स्टूडियो जैसे अन्य टूल में सामान तोड़ सकता है। धन्यवाद डोकर :(
  2. डॉकर टूलबॉक्स का नया संस्करण स्थापित करें।

Redis डेटाबेस उदाहरण: redis: image: redis:alpine container_name: redis ports: - "6379" volumes: - "/var/db/redis:/data:rw"

डॉकर क्विकस्टार्ट टर्मिनल में ...।

  1. रन docker-machine stop default- सुनिश्चित करें कि वीएम हॉल्टेड है

Oracle VM VirtualBox प्रबंधक में ...

  1. defaultVM या कमांड लाइन के माध्यम से एक साझा फ़ोल्डर जोड़ा गया
    • D:\Projects\MyProject\db => /var/db

में docker-compose.yml...

  1. मैप्ड रेडिस वॉल्यूम निम्नानुसार: "/var/db/redis:/data:rw"

डॉकर क्विकस्टार्ट टर्मिनल में ...।

  1. सेट करें COMPOSE_CONVERT_WINDOWS_PATHS=0(टूलबॉक्स संस्करण के लिए> = 1.9.0)
  2. docker-machine start defaultVM को पुनरारंभ करने के लिए चलाएँ ।
  3. cd D:\Projects\MyProject\
  4. docker-compose up अब काम करना चाहिए।

अब में redis डेटाबेस बनाता है D:\Projects\MyProject\db\redis\dump.rdb

रिश्तेदार होस्ट पथ से क्यों बचें?

मैंने विंडोज टूलबॉक्स के लिए सापेक्ष होस्ट पथ से परहेज किया क्योंकि वे अमान्य '' वर्णों को प्रस्तुत कर सकते हैं। यह पथ सापेक्ष के रूप में उपयोग करने के रूप में अच्छा नहीं है, docker-compose.ymlलेकिन कम से कम मेरे साथी डेवलपर्स आसानी से कर सकते हैं, भले ही उनका प्रोजेक्ट फ़ोल्डर docker-compose.ymlफ़ाइल हैक करने के लिए कहीं और हो (SCM के लिए खराब)।

वास्तविक मुद्दा

FYI करें ... यहाँ मूल त्रुटि मुझे तब मिली जब मैंने अच्छे स्वच्छ सापेक्ष रास्तों का उपयोग किया जो पुराने संस्करणों के लिए ठीक काम करते थे। मेरा वॉल्यूम मैपिंग सिर्फ हुआ करता था"./db/redis:/data:rw"

ERROR: for redis Cannot create container for service redis: Invalid bind mount spec "D:\\Projects\\MyProject\\db\\redis:/data:rw": Invalid volume specification: 'D:\Projects\MyProject\db\redis:/data

यह दो कारणों से टूटता है ..

  1. यह D:ड्राइव तक नहीं पहुंच सकता
  2. वॉल्यूम पथ में \वर्ण शामिल नहीं हो सकते
    • docker-compose उन्हें जोड़ता है और फिर आपको इसके लिए दोषी ठहराता है !!
    • COMPOSE_CONVERT_WINDOWS_PATHS=0इस बकवास को रोकने के लिए उपयोग करें ।

मैं आपकी docker-compose.ymlफ़ाइल में अतिरिक्त VM साझा फ़ोल्डर मैपिंग का दस्तावेजीकरण करने की सलाह देता हूं क्योंकि आपको फिर से VirtualBox की स्थापना रद्द करने और साझा फ़ोल्डर को रीसेट करने की आवश्यकता हो सकती है और वैसे भी आपके साथी देवता आपको इसके लिए प्यार करेंगे।


आप सर, एक अच्छे इंसान हैं
एरोनएचएस

1

अन्य सभी उत्तर उस समय के लिए अच्छे थे लेकिन अब (डॉकर टूलबॉक्स v18.09.3) सभी बॉक्स से बाहर काम करता है। आपको बस VirtualBox VM में एक साझा फ़ोल्डर जोड़ना होगा।

डॉकटर टूलबॉक्स स्वचालित C:\Usersरूप से /c/Usersवर्चुअल लाइनक्स मशीन (वर्चुअल बॉक्स साझा फ़ोल्डर सुविधा का उपयोग करके) के तहत साझा किए गए फ़ोल्डर के रूप में जोड़ता है , इसलिए यदि आपकी docker-compose.ymlफ़ाइल इस पथ के नीचे कहीं स्थित है और आप केवल इस पथ के तहत मेजबान मशीन की निर्देशिकाओं को माउंट करते हैं - सभी को बॉक्स से बाहर काम करना चाहिए।

उदाहरण के लिए:

C:\Users\username\my-project\docker-compose.yml:

...
  volumes:
    - .:/app
...

.पथ स्वचालित रूप से निरपेक्ष पथ में परिवर्तित हो जाएगा C:\Users\username\my-projectकरने के लिए और उसके बाद /c/Users/username/my-project। और यह बिल्कुल ऐसा है कि यह रास्ता लिनक्स वर्चुअल मशीन के दृष्टिकोण से कैसे देखा जाता है (आप इसे जांच सकते हैं: docker-machine sshऔर फिर ls /c/Users/username/my-project)। तो, अंतिम माउंट होगा /c/Users/username/my-project:/app

सभी आपके लिए पारदर्शी तरीके से काम करते हैं।

लेकिन यह काम नहीं करता है यदि आपका होस्ट माउंट पथ पथ के अंतर्गत नहीं C:\Usersहै। उदाहरण के लिए, यदि आप उसी के docker-compose.ymlतहत रखते हैं D:\dev\my-project

यह हालांकि आसानी से तय किया जा सकता है।

  1. वर्चुअल मशीन बंद करो ( docker-machine stop)।
  2. वर्चुअल बॉक्स GUI खोलें, वर्चुअल मशीन नाम की सेटिंग defaultखोलें Shared Folders, नया अनुभाग खोलें और नया साझा फ़ोल्डर जोड़ें:

    • फ़ोल्डर की जगह: D:\dev
    • फोल्डर का नाम: d/dev

    OKदो बार दबाएँ और वर्चुअल बॉक्स GUI को बंद करें।

  3. वर्चुअल मशीन ( docker-machine start) शुरू करें ।

बस इतना ही। के तहत मेजबान मशीन के सभी रास्तों D:\devअब docker-compose.ymlmounts में काम करना चाहिए ।


1

यह तीन उपकरणों का काम पूरा हुआ डायन संयोजन हो सकता है: docker-machine mount, rsync,inotifywait

टी एल; डॉ

नीचे सभी पर आधारित स्क्रिप्ट यहाँ है

मान लीजिए कि आपके पास अपना docker-compose.ymlऔर run_web.shमें है/home/jdcaballerov/web

  1. मशीन पर माउंट डायरेक्टरी जिसमें वही रास्ता है जो आपके मेजबान पर हैdocker-machine machine:/home/jdcaballerov/web /tmp/some_random_dir
  2. अपने मेजबान पर dir के साथ घुड़सवार निर्देशिका सिंक्रनाइज़ करें rsync -r /home/jdcaballerov/web /tmp/some_random_dir
  3. अपनी निर्देशिका में फ़ाइलों के हर परिवर्तन पर सिंक्रनाइज़ करें:

    inotifywait -r -m -e close_write --format '%w%f' /home/jdcaballerov/web | while read CHANGED_FILE
    do
        rsync /home/jdcaballerov/web /tmp/some_random_dir
    done
    

BE AWARE - दो निर्देशिकाएं हैं जिनके पास एक ही रास्ता है - एक आपके स्थानीय (होस्ट) मशीन पर है, दूसरा docker मशीन पर है।


0

मुझे लगता है कि run_web.shफ़ाइल आपकी docker-compose.ymlफ़ाइल के समान निर्देशिका में है । तब आज्ञा होनी चाहिए command: /app/run_web.sh

जब तक कि Dockerfile(आप खुलासा नहीं कर रहे हैं) run_web.shफ़ाइल को डॉकर छवि में डालने का ध्यान नहीं रखता है ।


आपके उत्तर के लिए धन्यवाद। यह उसी निर्देशिका पर है। हालाँकि मैं ध्यान देता हूं कि वॉल्यूम बढ़ नहीं रहा है। फ़ाइलें उपलब्ध नहीं हैं, और यह सवाल है। उन्हें कैसे जोड़ा जाए। संरचना Syncano.com/-
jdcaballerov

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

docker: डॉकर संस्करण 1.6.0, 4749651 का निर्माण, docker- मशीन संस्करण 0.2.0 (8b9eaf2), docker- रचना 1.2.0
jdcaballerov

क्या आपने किसी भी तरह से Syncano.com/… से Dockerfile को संशोधित किया है ?
थॉमसलेविल

1
हां, मैं कोड जोड़ता हूं, निर्देशिका बनाता हूं। मुसीबत यह है कि जब डॉकटर-कंपोज़ इसे निष्पादित करता है, तो यह वॉल्यूम को अधिलेखित करता है: वॉल्यूम: -:। / ऐप और एक खाली निर्देशिका छोड़ देता है। मैंने रचना में वॉल्यूम पर टिप्पणी की और यह काम करता है।
jdcaballerov

0

वर्चुअलबॉक्स पुनः आरंभ होने पर अतिरिक्त होस्ट माउंट बिंदु बनाने और स्वचालित करने के लिए यहां पोस्टों को सारांशित करने, अद्यतन स्क्रिप्ट संलग्न करने के बाद। नीचे काम कर रहे वातावरण के रूप में संक्षिप्त: - विंडोज 7 - docker-machine.exe संस्करण 0.7.0 - VirtualBox 5.0.22

    #!env bash

    : ${NAME:=default}
    : ${SHARE:=c/Proj}
    : ${MOUNT:=/c/Proj}
    : ${VBOXMGR:=C:\Program Files\Oracle\VirtualBox\VBoxManage.exe}
    SCRIPT=/mnt/sda1/var/lib/boot2docker/bootlocal.sh

    ## set -x
    docker-machine stop $NAME
    "$VBOXMGR" sharedfolder add $NAME --name c/Proj --hostpath 'c:\' --automount 2>/dev/null || :
    docker-machine start $NAME
    docker-machine env $NAME

    docker-machine ssh $NAME 'echo "mkdir -p $MOUNT" | sudo tee $SCRIPT'
    docker-machine ssh $NAME 'echo "sudo mount -t vboxsf -o rw,user $SHARE $MOUNT" |  sudo tee -a $SCRIPT'
    docker-machine ssh $NAME 'sudo chmod +x /mnt/sda1/var/lib/boot2docker/bootlocal.sh'
    docker-machine ssh $NAME 'sudo /mnt/sda1/var/lib/boot2docker/bootlocal.sh'
    #docker-machine ssh $NAME 'ls $MOUNT'

0

मैं अपने स्थानीय मशीन पर वर्चुअलबॉक्स ड्राइव के साथ डॉक-मशीन 0.12.2 का उपयोग कर रहा हूं। मैंने पाया कि वहाँ एक निर्देशिका /hosthome/$(user name)है जहाँ से आप स्थानीय फ़ाइलों तक पहुँच सकते हैं।


0

बस मैंने सोचा था कि मैं विंडोज 10 पर 18.03.1-ce-win65 (17513) का उपयोग कर रहा हूं और मैंने देखा कि अगर आपने पहले एक ड्राइव साझा किया है और क्रेडेंशियल्स को कैश किया है, तो एक बार जब आप अपना पासवर्ड बदलेंगे, तो आपके पास होना शुरू हो जाएगा। खाली के रूप में कंटेनरों के भीतर घुड़सवार वॉल्यूम।

यह कोई संकेत नहीं देता है कि वास्तव में क्या हो रहा है, यह अब पुराने कैश्ड क्रेडेंशियल्स के साथ साझा को एक्सेस करने में विफल हो रहा है। इस परिदृश्य में समाधान UI (सेटिंग्स-> साझा ड्राइव) के माध्यम से या तो क्रेडेंशियल को रीसेट करना है या फिर फिर से ड्राइव करने योग्य ड्राइव साझा करना और नया पासवर्ड दर्ज करना है।

यह उपयोगी होगा यदि डॉकटर-कंपोज ने इन स्थितियों में त्रुटि दी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.