linux - মাউন্ট এসএমবি/সিআইএফএস একটি ডকারের ধারক মধ্যে ভাগ



windows docker (4)

আমার কাছে একটি ডক পাত্রে একটি ওয়েব অ্যাপ্লিকেশন চলছে। এই অ্যাপ্লিকেশনটির জন্য আমাদের কর্পোরেট ফাইল সার্ভারে কিছু ফাইল অ্যাক্সেস করা দরকার (একটি অ্যাক্টিভ ডিরেক্টরি ডোমেন নিয়ামকযুক্ত উইন্ডোজ সার্ভার)। আমি যে ফাইলগুলিতে অ্যাক্সেস করার চেষ্টা করছি সেগুলি হ'ল আমাদের ক্লায়েন্টদের জন্য তৈরি করা ফাইল ফাইল এবং ওয়েব অ্যাপ্লিকেশন সেগুলি ক্লায়েন্টের পোর্টফোলিওর অংশ হিসাবে প্রদর্শন করে।

আমার ডেভলপমেন্ট মেশিনে আমার কাছে /etc/fstab এন্ট্রিগুলির মাধ্যমে উপযুক্ত ফোল্ডারগুলি মাউন্ট করা আছে এবং হোস্ট মাউন্ট পয়েন্টগুলি --volume আর্গুমেন্টের মাধ্যমে ডকার পাত্রে মাউন্ট করা হয়। এটি পুরোপুরি কাজ করে।

এখন আমি একটি প্রযোজনীয় ধারককে একত্রে রাখার চেষ্টা করছি যা একটি ভিন্ন সার্ভারে চালিত হবে এবং যা হোস্টের উপর বসানো সিআইএফএস ভাগের উপর নির্ভর করে না। সুতরাং আমি /etc/fstab ফাইলে যথাযথ এন্ট্রি যুক্ত করতে এবং সেগুলি মাউন্ট-এ দিয়ে mount -a । আমি mount error(13): Permission denied পেয়েছি mount error(13): Permission denied

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

সুতরাং, আমার দুটি প্রশ্ন রয়েছে:

  1. আমি কী বুঝতে পারি যে ডকার mount অভ্যন্তরের পাত্রে কোনও ব্যবহারকে বাধা দেয়?

  2. হোস্টে সিআইএফএস ভাগ না করে এবং তারপরে ডকারের ধারকটিতে হোস্ট ফোল্ডারটি মাউন্ট না করে কেউ কি এটি সম্পাদন করার অন্য কোনও উপায়ের কথা ভাবতে পারে?


Answer #1
  1. হ্যাঁ
  2. একটি ধারক মধ্যে একটি বন্ধ সমস্যা মাউন্ট cifs আছে

https://github.com/docker/docker/issues/22197

যা যোগ অনুযায়ী

--cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH

রান অপশনগুলি মাউন্ট-টি সিআইএফ চালু করবে।

আমি এটি চেষ্টা করে দেখেছি এবং:

mount -t cifs //<host>/<path> /<localpath> -o user=<user>,password=<user>

ধারক মধ্যে কাজ করে তারপর



Answer #3

কেবল একটি ভাগ মাউন্ট করার জন্য অনেকগুলি বন্দর প্রকাশ করে আপনার ধারকগুলিকে কম সুরক্ষিত করবেন না। বা এটিকে চালিত করে - --privileged হিসাবে

আমি এই সমস্যাটি কীভাবে সমাধান করেছি তা এখানে:

  • প্রথমে ডকার চালিত সার্ভারে ভলিউম মাউন্ট করুন।

sudo mount -t cifs -o username=YourUserName,uid=$(id -u),gid=$(id -g) //SERVER/share ~/WinShare

এখানে ব্যবহারকারীর নাম, SERVER এবং WinShare পরিবর্তন করুন। এটি আপনার সুডোর পাসওয়ার্ড জিজ্ঞাসা করবে, তারপরে এটি দূরবর্তী ভাগের জন্য পাসওয়ার্ড জিজ্ঞাসা করবে।

ধরে নেওয়া যাক আপনি আপনার বাড়ির ফোল্ডারের ভিতরে WinShare ফোল্ডারটি তৈরি WinShare । এই কমান্ডটি চালানোর পরে আপনি WinShare ফোল্ডারে সমস্ত ভাগ করা ফোল্ডার এবং ফাইলগুলি দেখতে সক্ষম হবেন। এছাড়াও আপনি যেহেতু uid এবং gid ট্যাগ ব্যবহার করেন আপনি gid সুডো ব্যবহার না করেই লেখার অ্যাক্সেস পাবেন।

  • এখন আপনি -v ট্যাগ ব্যবহার করে আপনার -v চালাতে পারেন এবং সার্ভার এবং ধারকটির মধ্যে একটি ভলিউম ভাগ করতে পারেন।

ধরা যাক আপনি এটি নীচের মত চালিয়েছেন।

docker run -d --name mycontainer -v /home/WinShare:/home 2d244422164

আপনার উইন্ডোজ শেয়ারটি অ্যাক্সেস করতে এবং এখনই আপনার ধারক থেকে এটি সংশোধন করতে সক্ষম হওয়া উচিত।

এটি পরীক্ষা করার জন্য এটি করুন:

docker exec -it yourRunningContainer /bin/bash

cd /Home

touch testdocfromcontainer.txt

উইন্ডোজ শেয়ারে আপনার testdocfromcontainer.txt দেখতে হবে।


Answer #4

হ্যাঁ, ডকার আপনাকে সুরক্ষার ব্যবস্থা হিসাবে কনটেইনারটির ভিতরে কোনও রিমোট ভলিউম মাউন্ট করতে বাধা দিচ্ছে। আপনি যদি নিজের চিত্র এবং তাদের চালিত লোকদের উপর নির্ভর করেন তবে আপনি এই সুরক্ষা ব্যবস্থা নিষ্ক্রিয় করতে --privileged সাথে --privileged পতাকাটি ব্যবহার করতে পারেন।

আরও, আপনি --cap-add এবং --cap-drop একত্রিত করতে কেবল --cap-add কেবলমাত্র প্রয়োজনীয় দক্ষতাগুলি দিতে পারেন। (ডকুমেন্টেশন দেখুন) SYS_ADMIN সামর্থ্য হ'ল মাউন্ট সুবিধাগুলি।





cifs