2014-10-13 6 views
6

पर डॉकर छवि के लिए माउंट वॉल्यूम माउंट पर, आप वॉल्यूम को डॉकर कंटेनर में कैसे घुमाते हैं?ओएसएक्स

मेरे लिनक्स बॉक्स पर, यह आसान है। कंटेनर चलाने पर मुझे बस -v /src/webapp:/opt/webapp की तरह कुछ करना है। लेकिन मैक अलग है क्योंकि मुझे वर्चुअलबॉक्स में वीएम चलाने के लिए boot2docker चलाने की ज़रूरत है। मैं

boot2docker init 
boot2docker up 
boot2docker ssh # to poke around 
boot2docker stop 
VBoxManage sharedfolder add "boot2docker-vm" --name "Users" --hostpath /Users 
boot2docker up 
boot2docker ssh "sudo modprobe vboxsf" 

चल की कोशिश की है, लेकिन मैं

modprobe: module vboxsf not found in modules.dep 

मिलता है मुझे लगता है कि उपेक्षा और अभी भी बहुत

boot2docker ssh "sudo mkdir /test && sudo mount -t vboxsf Users /test" 

मैं

mount: mounting Users on /test failed: No such device 
मिल की तरह वीएम पर माउंट करने के लिए कोशिश

मुझे लगता है कि मुझे कुछ बेहद कमजोर याद आ रही है ले, लेकिन मैं इसे काफी समझ नहीं सकता। किसी भी तरह की सहायता का स्वागत किया जाएगा।

+0

[मैक पर बूट 2 डॉकर - स्थानीय फ़ाइलों तक पहुंच] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/24212228/boot2docker-on-mac-accessing-local-files) –

उत्तर

6

ठीक है, a GitHub PR के माध्यम से खोदने के बाद, मैं ऐसा करने का एक तरीका समझने में सक्षम था। भविष्य के पाठकों के लिए, इस प्रक्रिया को boot2docker की आगामी रिलीज में ठीक किया जाना चाहिए।

# assuming boot2docker and VirtualBox are installed 
wget http://static.dockerfiles.io/boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso 
mv boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso ~/.boot2docker/boot2docker.iso 
# blow away your old boot2docker-vm if it exists (boot2docker down && boot2docker destroy) 
boot2docker init 
boot2docker up 
# set DOCKER_HOST as instructed 
boot2docker stop 
VBoxManage sharedfolder add boot2docker-vm --name /Users --hostpath /Users 
boot2docker up 
# if you ssh into the VM now, you'll notice /Users is present, but empty; I don't know/care why. 
boot2docker ssh "sudo mount -t vboxsf -o uid=1000,gid=50 /Users /Users" 
# done 

यह मेरे लिए काम करता है इसलिए मुझे उम्मीद है कि यह दूसरों के लिए काम करेगा। निकट भविष्य में, मुझे उम्मीद है कि इस मुद्दे को boot2docker द्वारा हल किया जाएगा, खासकर जब से पीआर से मुझे इन आदेशों को मिला दिया गया था।

EDIT: boot2docker 1.3.0 बिना किसी बदलाव के इसका समर्थन करता है।

boot2docker destroy # start over 
boot2docker download # download the udpated ISO 
boot2docker init 
boot2docker up 
# done 
+0

कल जारी किए गए boot2docker का संस्करण ऑटो- अपनी/उपयोगकर्ता निर्देशिका – klochner

+0

माउंट करें, धन्यवाद, मैंने अपडेट को प्रतिबिंबित करने के लिए इस उत्तर को संपादित किया है। – geowa4

3

भविष्य में इस खोजने लोग से/उपयोगकर्ता और कुछ माउंट के लिए, वहाँ एक स्क्रिप्ट किसी कि तुम और के लिए पूरी प्रक्रिया करता है GitHub पर एक सार के रूप में बनाया गया है: अद्यतन करने के बाद, मैं इन आदेशों भाग गया कमाल है। बस this का उपयोग करें। यह वर्चुअलबॉक्स के साथ घूमने के लिए मुझे बहुत सिरदर्द बचाया। यह मेरे मैक पर योकरेट पर चलने वाले डॉकर 1.3.0 के रूप में परीक्षण किया जाता है।

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

अब जब कि डोकर मशीन CLI पक्ष या डोकर मशीन में पदावनत किया गया है, आपके द्वारा डोकर-मशीन के साथ यह क्या कर सकते हैं:

पहले, ssh docker- में मशीन वीएम और फोल्डर हम से मैप किया जाएगा बनाने के लिए:

docker-machine ssh $MACHINE_NAME "sudo mkdir -p \"$VOL_DIR\"" 

अब साझा VirtualBox के लिए फ़ोल्डर:

WORKDIR=$(basename "$VOL_DIR") 
vboxmanage sharedfolder add "$MACHINE_NAME" --name "$WORKDIR" --hostpath "$VOL_DIR" --transient 

अंत में, फिर डोकर-मशीन में ssh और माउंट फ़ोल्डर हम सिर्फ साझा:

docker-machine ssh $MACHINE_NAME "sudo mount -t vboxsf -o uid=\"$U\",gid=\"$G\" \"$WORKDIR\" \"$VOL_DIR\"" 

नोट: यूआईडी और GID आप मूल रूप से जो कुछ भी पूर्णांक के रूप में लंबे समय के रूप में वे पहले ही ले लिया नहीं कर रहे हैं के लिए उपयोग कर सकते हैं।

यह ओएस एक्स एल कैपिटन पर डॉकर मशीन 0.4.1 और डॉकर 1.8.3 के रूप में परीक्षण किया जाता है।