ডকারে, ধারকগুলির ভিতরে তৈরি ফাইলগুলির হোস্টের কাছ থেকে পরিদর্শন করার সময় অপ্রত্যাশিত মালিকানা থাকে। একটি ভলিউমের ফাইলগুলির মালিক ডিফল্টরূপে রুট (uid 0) হয় তবে নন-রুট ব্যবহারকারী অ্যাকাউন্টগুলি পাত্রে জড়িত থাকে এবং ফাইল সিস্টেমে লেখার সাথে সাথে মালিকরা হোস্ট দৃষ্টিকোণ থেকে কম-বেশি এলোমেলো হয়ে যায়।
আপনি যখন একই ব্যবহারকারীর অ্যাকাউন্টটি ডকার কমান্ডগুলি কল করে হোস্টের কাছ থেকে ভলিউম ডেটা অ্যাক্সেস করতে চান তখন এটি একটি সমস্যা।
টিপিক্যাল ওয়ার্কারআউন্ডস হয়
- ডকফায়াইলগুলিতে তৈরির সময় ব্যবহারকারীদের ইউআইডি জোর করে (পোর্টেবল নয়)
docker runপরিবেশের পরিবর্তনশীল হিসাবে কমান্ডটিতে হোস্ট ব্যবহারকারীর ইউআইডি পাস করার পরেchownএকটি এন্টিপয়েন্ট স্ক্রিপ্টে ভলিউমের উপর কিছু কমান্ড চালানো ।
এই উভয় সমাধানই ধারকটির বাইরের প্রকৃত অনুমতিগুলিতে কিছুটা নিয়ন্ত্রণ দিতে পারে।
আমি আশা করলাম ব্যবহারকারীর নামস্পেসগুলি এই সমস্যার চূড়ান্ত সমাধান হবে। আমি সম্প্রতি প্রকাশিত সংস্করণ 1.10 এবং - ডেস্কটপ অ্যাকাউন্টে ইউজারেন্স-রিম্যাপ সেট দিয়ে কিছু পরীক্ষা চালিয়েছি। তবে, আমি নিশ্চিত নই যে এটি মাউন্ট ভলিউমে ফাইল মালিকানা মোকাবেলা করতে আরও সহজ করে তুলতে পারে, আমি ভয় করি যে এটি আসলে বিপরীত হতে পারে।
ধরুন আমি এই বেসিক পাত্রে শুরু করি
docker run -ti -v /data debian:jessie /bin/bash
echo 'hello' > /data/test.txt
exit
এবং তারপরে হোস্টের সামগ্রীটি পরিদর্শন করুন:
ls -lh /var/lib/docker/100000.100000/volumes/<some-id>/_data/
-rw-r--r-- 1 100000 100000 6 Feb 8 19:43 test.txt
এই সংখ্যাটি '100000' আমার হোস্ট ব্যবহারকারীর একটি সাব-ইউআইডি, তবে এটি যেহেতু এটি আমার ব্যবহারকারীর ইউআইডির সাথে সামঞ্জস্য নয়, তবুও আমি বিনা অধিকার ছাড়াই টেস্ট.টেক্সট সম্পাদনা করতে পারি না। এই উপ-ব্যবহারকারীর ডকারের বাইরে আমার প্রকৃত নিয়মিত ব্যবহারকারীর সাথে কোনও সখ্যতা বলে মনে হচ্ছে না। এটি ম্যাপ করা হয়নি।
হোস্ট এবং ধারকটির মধ্যে ইউআইডি প্রান্তিককরণের সমন্বয়ে গঠিত এই পোস্টে এর আগে উল্লিখিত ওয়ার্কআরউন্ডস UID->sub-UIDনেমস্পেসে ম্যাপিংয়ের কারণে আর কাজ করে না ।
তারপরে, হোস্ট ব্যবহারকারীকে ডকারের সাথে চালিত ভলিউমগুলিতে উত্পন্ন ফাইলগুলির মালিকানা তৈরি করার সময়েও ব্যবহারকারী নামস্থান সক্ষম (উন্নত সুরক্ষার জন্য) দিয়ে ডকার চালানোর কোনও উপায় আছে কি?