2017-07-15 9 views
12

पर ज्ञात नहीं हैं कमांड डॉकर रन -v/var/फ़ोल्डर्स/zz/... निम्न त्रुटि उत्पन्न करता है।डॉकर: माउंट्स इनकार कर दिया। पथ ... ओएस एक्स से साझा नहीं किए जाते हैं और डॉकर

docker: Error response from daemon: Mounts denied: 
The paths /var/folders/zz/... and /var/folders/zz/... 
are not shared from OS X and are not known to Docker. 
You can configure shared paths from Docker -> Preferences... -> File Sharing. 

जब मैं फ़ाइल साझाकरण खोलता हूं, तो मुझे लगता है कि/निजी पहले से सूचीबद्ध है।

यदि मैं/var/फ़ोल्डर/जोड़ने का प्रयास करता हूं, तो यह/निजी/var/फ़ोल्डरों का हल करता है, जो कि एक निजी/निजी है और इसलिए अतिरिक्त अस्वीकार कर दिया गया है।

संक्षेप में, यह मुझे निर्देशिका/var/फ़ोल्डर्स/.. जैसे ओएस एक्स द्वारा/निजी की उपनिर्देशिका के रूप में साझा किया जाता है और इसलिए डॉकर को जाना जाना चाहिए। इसे हल करने में कोई मदद की सराहना की जाएगी।

एक प्रयोग के रूप में, मैंने/निजी/var/फ़ोल्डर्स के साथ फ़ाइल साझाकरण में निजी/प्रतिस्थापित किया और डॉकर को पुनरारंभ किया लेकिन परिणाम नहीं बदला।

बस एक और पूर्ण संदर्भ के लिए, यह .sh script है, जो this python script चलाता है, जो बदले में डॉकर कमांड चलाता है।

+0

क्या आपने '-v/private/var/फ़ोल्डर्स/zz/... 'कोशिश की? –

+0

@DanLowe: मैंने नहीं किया था, क्योंकि कोड 'WORKING_DIR = "$ (mktemp -d)' और' -v $ {WORKING_DIR} 'जैसा था। लेकिन' WORKING_DIR = "/ private" $ (mktemp - डी) ', इस मुद्दे को हल करने के लिए प्रतीत होता है। बहुत बहुत धन्यवाद :) – Aayush

+0

मैं कुछ जवाब दूंगा जब यह कुछ मिनट मिलता है तो यह एक उत्तर पोस्ट करेगा –

उत्तर

19

Docker for Mac वॉल्यूम माउंट बेस डॉकर सिस्टम से भिन्न व्यवहार करते हैं। यह ज्यादातर इसलिए है क्योंकि डॉकर ऐप्पल के फाइल सिस्टम सैंडबॉक्स दिशानिर्देशों का अनुपालन करने की कोशिश करता है।

जैसा कि डॉकर की प्राथमिकताओं में दिखाया गया है, केवल कुछ पथ मैकोज़ द्वारा निर्यात किए जाते हैं।

  • /Users
  • /Volumes
  • /tmp
  • /private

File Sharing preference panel

/var MacOS में एक प्रतीकात्मक कड़ी /private में है। यही कारण है कि /tmp के लिए भी सच है:

$ ls -ld /tmp /var 
[email protected] 1 root wheel 11 Jan 26 16:18 /tmp -> private/tmp 
[email protected] 1 root wheel 11 Jan 26 16:18 /var -> private/var 

/tmp बंटवारे पैनल की सूची में क्यों है, लेकिन /var नहीं है (भले ही दोनों /private का एक हिस्सा हैं)? मैक के documentation about filesystem namespaces के लिए डोकर बताते हैं:

By default, you can share files in /Users/ , /Volumes/ , /private/ , and /tmp directly. To add or remove directory trees that are exported to Docker, use the File sharing tab in Docker preferences whale menu -> Preferences -> File sharing. (See Preferences.)

All other paths used in -v bind mounts are sourced from the Moby Linux VM running the Docker containers, so arguments such as -v /var/run/docker.sock:/var/run/docker.sock should work as expected. If a macOS path is not shared and does not exist in the VM, an attempt to bind mount it will fail rather than create it in the VM. Paths that already exist in the VM and contain files are reserved by Docker and cannot be exported from macOS.

ध्यान दें कि /var/run विशेष रूप से एक जगह है कि बजाय MacOS से की लिनक्स वीएम से घुड़सवार किया जाएगा, के रूप में यहाँ उल्लेख किया है।

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

आपके मामले में, /var मैकोज़ द्वारा निर्यात नहीं किया जाता है। /var लिनक्स वीएम में मौजूद है, लेकिन /var/folders नहीं है। इसलिए, पथ उपलब्ध नहीं है, और माउंट विफल रहता है।

यदि आप /private/var पर पथ बदलते हैं, तो यह सफल होगा, क्योंकि मैकोज़ बढ़ने के लिए पूरे /private फाइल सिस्टम पेड़ निर्यात करता है।

चीजों को और अधिक पोर्टेबल बनाने के लिए, आप परीक्षण कर सकते हैं कि आप वर्तमान में किस प्लेटफ़ॉर्म पर चल रहे हैं, और यदि यह मैकोज़ है, तो /private के साथ माउंट पथ को उपसर्ग करें।

+0

बस यह सुनिश्चित करने के लिए: i '-v/var/janus:/var/janus' है। क्या मुझे दोनों पथों (पहले और बाद में': 'के पहले और बाद में'/private' 'से शुरू करने के लिए पथ बदलना चाहिए? –

+3

@ सैमुअलमेन्डेज़ बस पहला एक। प्रारूप 'मैक-पथ: कंटेनर-पथ' है, और '/ private' केवल इसके मैक पक्ष पर मौजूद होगा। –

+0

मुझे इसी तरह की समस्या का सामना करना पड़ सकता है, कोई भी मुझे (" बी 'माउंट अस्वीकार करने में मदद कर सकता है: \ r \ n पथ/etc/localtime \ r \ n ओएस एक्स से साझा नहीं किया गया है और डॉकर को ज्ञात नहीं है। \ r \ nYou डॉकर से साझा पथ कॉन्फ़िगर कर सकते हैं -> प्राथमिकताएं ... -> फ़ाइल साझाकरण। \ r \ n अधिक जानकारी के लिए https://docs.docker.com/docker-for-mac/osxfs/#namespaces देखें। \ r \ n। '') डॉकर के माध्यम से/आदि जोड़ने की कोशिश की -> प्राथमिकताएं ... -> फ़ाइल साझा करना यह कहता है/आदि मैक ओएस किसी भी समाधान लड़कों के लिए आरक्षित है? –

संबंधित मुद्दे