ডকার: মাউন্টগুলি অস্বীকার করা হয়েছে। পাথগুলি… ওএস এক্স থেকে ভাগ করা হয়নি এবং ডকারের কাছে জানা নেই


112

কমান্ড docker run -v /var/folders/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/folder/এটি সমাধান হয়ে যায়, এটি /private/var/folders/ প্রাইভেটের একটি উপসেট এবং তাই সংযোজনটি প্রত্যাখ্যান করা হয়।

সংক্ষিপ্তসার হিসাবে, এটি আমার কাছে দেখে মনে হচ্ছে ডিরেক্টরিটি /var/folders/..ওএস এক্স দ্বারা একটি উপ-ডিরেক্টরি হিসাবে ভাগ করা হয়েছে /privateএবং তাই অবশ্যই তাকে ডকারের কাছে জানা উচিত। এটি সমাধানে যে কোনও সহায়তা প্রশংসিত হবে।

একটি পরীক্ষা হিসাবে, আমি /privateফাইল ভাগ করে নেওয়ার সাথে প্রতিস্থাপন করেছি /private/var/foldersএবং ডকার পুনরায় শুরু করেছি তবে ফলাফলটি পরিবর্তন হয়নি।

কেবলমাত্র আরও সম্পূর্ণ রেফারেন্সের জন্য, এটি .sh স্ক্রিপ্ট , যা এই অজগর স্ক্রিপ্টটি চালায় , যার ফলে ডকার কমান্ডটি চালিত হয়।


4
আপনি চেষ্টা করেছেন -v /private/var/folders/zz/...?
ড্যান লো 20

@ ড্যানলওয়ে: আমার ছিল না, কারণ কোডটি লেগেছে WORKING_DIR="$(mktemp -d)এবং -v ${WORKING_DIR}। তবে তা হ্যাকিংয়ের WORKING_DIR="/private"$(mktemp -d)মাধ্যমে সমস্যার সমাধান হবে বলে মনে হচ্ছে। আপনাকে অনেক ধন্যবাদ :)
আয়ুশ

আমি যখন কয়েক মিনিট সময় পাই তখন কেন এটি কাজ করেছিল তা ব্যাখ্যা করে একটি উত্তর পোস্ট করব
ড্যান লো 20

এটা দুর্দান্ত হতে হবে, আবার ধন্যবাদ।
আয়ুশ

আমি একই ত্রুটি বার্তা সম্মুখীন। আমার পরিস্থিতিতে আপনার ডিরেক্টরিতে কোনও স্থান নেই আমি "সার্ভার সাইড" "সার্ভারসাইড" এ পরিবর্তন করি তবে এটি সমাধান হয়ে যায়। আশা করি এটি কিছু সাহায্য করতে পারে।
andrew54068

উত্তর:


136

ম্যাক ভলিউম মাউন্টগুলির জন্য ডকার বেস ডকার সিস্টেমের চেয়ে আলাদা আচরণ করে। এটি বেশিরভাগ কারণ ডোকার অ্যাপলের ফাইল সিস্টেম স্যান্ডবক্স নির্দেশিকা মেনে চলার চেষ্টা করে।

ডকারের পছন্দ হিসাবে দেখানো হয়েছে, কেবলমাত্র কয়েকটি পাথ ম্যাকস দ্বারা রফতানি করা হয়েছে।

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

ফাইল ভাগ করে নেওয়া পছন্দ প্যানেল

/varম্যাকোস এ একটি প্রতীকী লিঙ্ক /private। এটিও সত্য /tmp:

$ ls -ld /tmp /var
lrwxr-xr-x@ 1 root  wheel  11 Jan 26 16:18 /tmp -> private/tmp
lrwxr-xr-x@ 1 root  wheel  11 Jan 26 16:18 /var -> private/var

/tmpভাগ করে নেওয়ার প্যানেলে তালিকাভুক্ত কেন , তবে /varতা নয় (যদিও উভয়ই একটি অংশ /private)? ফাইল সিস্টেমে নেমস্পেসগুলি সম্পর্কে ম্যাকের ডকুমেন্টেশনের জন্য ডকার ব্যাখ্যা করেছেন:

ডিফল্টরূপে, আপনি ফাইল শেয়ার করতে পারেন /Users/, /Volumes/, /private/, এবং /tmpসরাসরি। ডকারে রফতানি করা ডিরেক্টরি ট্রি যুক্ত করতে বা মুছে ফেলার জন্য ডকারের পছন্দসমূহ তিমি মেনুতে -> পছন্দসমূহ -> ফাইল ভাগ করে নেওয়ার ক্ষেত্রে ফাইল ভাগ করে নেওয়ার ট্যাবটি ব্যবহার করুন। (পছন্দসমূহ দেখুন।)

-vবাইন্ড মাউন্টগুলিতে ব্যবহৃত অন্যান্য সমস্ত পাথ ডবির পাত্রে চালিত মবি লিনাক্স ভিএম থেকে উত্সাহিত হয়, সুতরাং আর্গুমেন্ট -v /var/run/docker.sock:/var/run/docker.sockযেমন প্রত্যাশা অনুযায়ী কাজ করা উচিত। যদি কোনও ম্যাকোস পাথ ভাগ না করা হয় এবং ভিএম-তে উপস্থিত না থাকে তবে মাউন্টটিকে আবদ্ধ করার চেষ্টাটি ভিএম-এ তৈরি করার পরিবর্তে ব্যর্থ হবে। VM- এ ইতিমধ্যে বিদ্যমান পাথগুলি এবং ফাইলগুলি ডকারের দ্বারা সংরক্ষিত এবং ম্যাকোস থেকে রফতানি করা যায় না।

নোট যে /var/runএখানে বিশেষত একটি জায়গা হিসাবে উল্লেখ করা হয়েছে যা লিনাক্স ভিএম থেকে ম্যাকোসের পরিবর্তে মাউন্ট করা হবে।

আপনি যখন ভলিউম মাউন্টের জন্য জিজ্ঞাসা করবেন, তখন ম্যাকোস ফাইল সিস্টেম রফতানিগুলি প্রথমে পরীক্ষা করা হবে। যদি সেখানে কোনও মিল না থাকে, লিনাক্স ভিএম যেখানে ডকার চলমান রয়েছে তার পরে পরীক্ষা করা হবে। যদি আপনি দুজনেরই অনুরোধকৃত পথ না থাকে তবে মাউন্টটি ব্যর্থ হয়।

আপনার ক্ষেত্রে, /varম্যাকোস দ্বারা রফতানি হয় না। /varলিনাক্স ভিএম-তে উপস্থিত রয়েছে, তবে /var/foldersতা নেই। অতএব, পাথ উপলব্ধ নেই এবং মাউন্ট ব্যর্থ হয়।

আপনি যদি এই পথটি পরিবর্তন করেন /private/varতবে তা সফল হবে, কারণ ম্যাকোস /privateমাউন্ট করার জন্য পুরো ফাইল সিস্টেম ট্রি রফতানি করে ।

জিনিসগুলিকে আরও পোর্টেবল করার জন্য, আপনি বর্তমানে কোন প্ল্যাটফর্মটি চালাচ্ছেন তা পরীক্ষা করতে চাইতে পারেন এবং যদি এটি ম্যাকোস হয় তবে এর সাথে মাউন্ট পাথটি উপস্থাপন করুন /private


4
@ স্যামুয়েলমান্ডেজ ঠিক প্রথমটি। ফর্ম্যাটটি হ'ল mac-path:container-pathএবং /privateএটি কেবল ম্যাকের পাশে থাকবে।
ড্যান লো 13

4
আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি কেউ সমাধান করতে আমাকে সহায়তা করতে পারে ("বি'ম্যাউন্টগুলি অস্বীকার করা হয়েছে: \ r \ n পথ / ইত্যাদি / স্থানীয় সময় \ r \ n ওএস এক্স থেকে ভাগ করা হয়নি এবং ডকারের কাছে জানা নেই \ r \ n আপনি ভাগ করা পথগুলি কনফিগার করতে পারেন ডকার থেকে -> পছন্দসমূহ ... -> ফাইল ভাগ করে নেওয়া । \ r \ n আরও তথ্যের জন্য ডকুমেন্টস.ডোকার. com /ডোকার- ম্যাক / আফসফস/# নামস্পেস দেখুন \ \ r \ n। '") এর মাধ্যমে / ইত্যাদি যুক্ত করার চেষ্টা করুন ডকার -> পছন্দসমূহ ... -> ফাইল ভাগ করে নেওয়ার মাধ্যমে বলা হয় / ইত্যাদি ম্যাকের জন্য কোনও সমাধানের জন্য সংরক্ষিত?
সন্দীশ কুমার এইচএন

4
@ ড্যানলয়ে প্রতিক্রিয়াটির জন্য ধন্যবাদ। যদি আমি / বেসরকারী / ইত্যাদি / লোকালটাইমে যুক্ত করার চেষ্টা করি তবে "রফতানি পথ / প্রাইভেট / ইত্যাদি / স্থানীয় সময় রফতানি পথ / ব্যক্তিগত সাথে ওভারল্যাপ হয়।" আমি "/ etc / লোকালটাইম" যোগ করতে ক্লান্ত হয়েছি কিন্তু নতুন ত্রুটি পেয়েছে এটিতে "APIError: 500 সার্ভার ত্রুটি: অভ্যন্তরীণ সার্ভার ত্রুটি (" মাউন্ট উত্সের পথ তৈরি করার সময় ত্রুটি '/ etc / স্থানীয় সময়: mkdir / etc / স্থানীয় সময়: ফাইল বিদ্যমান ") " কোন ধারণা??
সন্দীশ কুমার এইচএন


4
@ ড্যানলওয়ে আপনার সদয় উত্তরের জন্য আপনাকে ধন্যবাদ। আমি তোমাকে বুঝি. যখন আমরা ম্যাক ওএসে বিকাশ করি তখন উবুন্টুতে স্থাপন করুন। আমরা ভলিউম / ইত্যাদি / লোকালটাইমে ডকার-কম্পোজ ব্যবহার করি। আমরা কি সিস্টেমটি পরীক্ষা করে আলাদা পথ নির্ধারণ করব? ভালো লেগেছে /private/etc/localtimeMac OS জন্য /etc/localtimeউবুন্টু জন্য। ডকার-কমপোজ.আইএমএল-তে সিস্টেমের তথ্য কীভাবে বলা যায়? ধন্যবাদ!
hzwzw

6

বিকল্প সমাধান হিসাবে :

থেকে পথ পরিবর্তন /private/instance1-data:/homeকরতে./instance1-data:/home

* নিক্স জমিতে এবং তাই ডকার, .বর্তমান ডিরেক্টরি নির্দেশ করে। ম্যাকোস যেহেতু স্যান্ডবক্সিং সম্পর্কে আরও পিকেয়ার গ্রহণযোগ্য, তাই এটি ম্যাকোসের জন্য একটি কার্যকর সমাধান হিসাবে মনে হচ্ছে। instance1একই ডিরেক্টরিতে প্রয়োজনীয় ফোল্ডারটি তৈরি করুন ।

এই সমাধান আরেকটি সুবিধা হলো এটি চালানোর জন্য প্রয়োজন সরিয়ে দেয় docker-composeসঙ্গে sudo। নির্বিশেষে, এটি এই ক্ষেত্রে কোনও ক্ষতি করে না তবুও এটি একটি প্লাস।


3

/var/tmpআমার ম্যাকের মধ্যে একটি ডিরেক্টরি তৈরি করেছি যেখানে আমি আমার ডকারের ধারকটিতে মাউন্ট করতে চেয়েছিলাম একইরকম সমস্যা হয়েছিল ।

নিম্নলিখিত হিসাবে একটি ফাইল ডিরেক্টরি ডিরেক্টরি যোগ করে এটি সমাধান:

$ cat ~/Library/Group\ Containers/group.com.docker/settings.json  
{
  "filesharingDirectories" : [
    "\/Users",
    "\/Volumes",
    "\/private",
    "\/tmp",
    "\/var\/tmp"
  ],
…

এখন আমি ডিরেক্টরিটি /var/tmpডকার-> অগ্রাধিকার-> উত্স-> ফাইল ভাগ করে নেওয়ার ক্ষেত্রে দেখতে পেয়েছি। তারপরে আমি ডকারটি আবার চালু করলাম।

এটি তখন আমার মাউন্টিং সমস্যার সমাধান করে।


2

উদাহরণস্বরূপ, পোর্টেইনার ব্যবহার করে, এই আদেশটি আমার পক্ষে কাজ করে:

docker run -d --restart unless-stopped -p 9000:9000 \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v /var:/data portainer/portainer --no-auth

তবে, আমি যদি একেবারে ভিন্ন হয় তবে -v /var:/dataএটি কার্যকর হবে না। আমি মনে করি (তবে নিশ্চিত নয়) এর কারণ ডকার একটি এমকেডির করার চেষ্টা করছে। সুতরাং, যদি আমি মাউন্ট করার চেষ্টা করি তবে -v /var/whatever:/dataএমকিডির ব্যর্থ হয় কারণ পর্যাপ্ত অনুমতি নেই, এবং এটি কার্যকর হয় না।

আমার কাছে দুটি ম্যাকস (হাই সিয়েরা) আছে এবং আমি এটি উভয়ের জন্যই চেষ্টা করেছি। একই সমস্যা. এছাড়াও, আমি ডকার বিটা চ্যানেলটি ব্যবহার করার চেষ্টা করেছি। আমি মনে করি আমি ড্যান লোয়ের উত্তরটি বুঝতে পেরেছি: যদি এই উত্তরটি আমার পক্ষে কাজ করে তবে আমি এই উত্তরটি আপডেট করব।


0

আমার ইস্যুটি ঠিক হয়ে গেছে যখন আমি ডকারের পছন্দগুলিতে ফাইল শেয়ারিং থেকে প্রকল্পের পথটি সরিয়ে নিয়েছি এবং ডকার পুনরায় চালু করব, তারপরে আবার প্রকল্পের ফাইলের পথ যুক্ত করুন।


0

আমার ইস্যুটি আরঘিয়ার মতোই স্থির হয়েছে। আমার কেবল ফাইল ভাগ করে নেওয়া থেকে ডকগুলি সরানো এবং ডকার পুনরায় চালু করা দরকার।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.