সুডো ছাড়াই আমি কীভাবে ডকার ব্যবহার করতে পারি?


767

ডকারের ডকুমেন্টেশন পৃষ্ঠাগুলিতে, সমস্ত উদাহরণ কমান্ডগুলি ছাড়া এইগুলি প্রদর্শিত হবে sudo:

docker ps

উবুন্টুতে, বাইনারি বলা হয় docker.io। এটি সুডো ছাড়াও কাজ করে না:

sudo docker.io ps

আমি ডকারকে কীভাবে কনফিগার করব যাতে আমার প্রতিটি ডকার কমান্ডকে সুডোর সাথে উপস্থাপনের প্রয়োজন না হয়?



2
উবুন্টু 14.04 উপর আছে এছাড়াও 'Docker' বাইনারি।
অ্যানাটোলি টেকটোনিক

@ এনাটোলিটিচটোনিক আমি উবুন্টু ১৪.০৪ এলটিএস
নবীন

2
প্রস্তাবিত ইনস্টলেশনটি ডিফল্ট উবুন্টু রেজোতে ডকার নয় ; পরিবর্তে, এখানে নির্দেশাবলী ( ডকস.ডকার / এঞ্জিন / ইন্সটলেশন / লিনাক্স / বুন্টুলিনাক্স ), ডকার রেপো ব্যবহারের পরামর্শ দেয়। সমস্ত বিদ্যমান Docker কাপড় সরান, এবং যাচাই ডান উৎস থেকে এক পেয়ে করছেন যারা apt-cache policy docker-engine(কার্যক্ষম URL dockerproject.org থেকে হওয়া উচিত)
মাইকেল

2
কিভাবে একটি উপনাম সম্পর্কে:? এইভাবে, আপনি পাসওয়ার্ড সুরক্ষা সহ sudo ব্যবহার করেন। ওরফে ডকার = "সুডো ডকার"
আন্দ্রেজ পাঞ্জকভ 22'18

উত্তর:


1136

সুসংবাদ: নতুন ডকার (সংস্করণ ১৯.০৩ (বর্তমানে পরীক্ষামূলক)) মূল ব্যবহারকারী ব্যবহার করে যে সমস্যা দেখা দিতে পারে সেগুলি উপেক্ষা করে রুটলেস চালাতে সক্ষম হবে। যখন আপনি চান না তখন আপনার মেশিনটি খুলে দিতে পারে এমন উন্নত অনুমতি, রুট এবং এমন কোনও কিছু নিয়ে আর কোনও গোলযোগ নেই।

[ডকারকন 2019] এর থেকে ভিডিও ] রুটলেস মোড সহ ডকার ডিমনকে কঠোর করা

রুটলেস ডকার মোডে কয়েকটি ক্যাভেট

ডকার ইঞ্জিনিয়াররা বলছেন যে ডকার ইঞ্জিন বৈশিষ্ট্যগুলির সম্পূর্ণ স্যুটটির জন্য রুটলেস মোডটিকে প্রতিস্থাপন হিসাবে বিবেচনা করা যাবে না। রুটলেস মোডের কিছু সীমাবদ্ধতার মধ্যে রয়েছে:

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

19.3 ডকার হিসাবে এটি অপ্রচলিত (এবং প্রয়োজনের তুলনায় আরও বিপজ্জনক):

Docker ম্যানুয়াল এই এটা সম্পর্কে বলার আছে:

অ-রুট অ্যাক্সেস দেওয়া

ডকার ডিমন সর্বদা রুট ব্যবহারকারী হিসাবে চলে এবং ডকার সংস্করণ ০.০.২ থেকে ডকার ডিমন টিসিপি পোর্টের পরিবর্তে ইউনিক্স সকেটে বাঁধে। ডিফল্টরূপে ইউনিক্স সকেটটি ব্যবহারকারী রুটের মালিকানাধীন এবং তাই, ডিফল্টরূপে, আপনি এটি sudo দিয়ে অ্যাক্সেস করতে পারেন।

০.০.৩ সংস্করণে শুরু করে আপনি যদি (বা আপনার ডকার ইনস্টলার) ডকার নামে একটি ইউনিক্স গ্রুপ তৈরি করেন এবং এতে ব্যবহারকারীদের যুক্ত করেন তবে ডকার ডিমনটি ডিকমন গোষ্ঠীর দ্বারা ইউনিক্স সকেটের পাঠ / লেখার যোগ্যতা তৈরি করবে যখন ডেমন শুরু হবে । ডকার ডেমনটি অবশ্যই সর্বদা রুট ব্যবহারকারী হিসাবে চলতে পারে, তবে আপনি যদি ডকার গ্রুপে ব্যবহারকারী হিসাবে ডকার ক্লায়েন্ট চালনা করেন তবে আপনাকে সমস্ত ক্লায়েন্ট কমান্ডে sudo যুক্ত করার দরকার নেই। ০.৯.০-এর হিসাবে, আপনি উল্লেখ করতে পারেন যে ডকার বাদে অন্য কোনও গ্রুপের -G বিকল্পের সাথে ইউনিক্স সকেটের মালিক হওয়া উচিত।

সতর্কতা: ডকার গ্রুপ (বা -জি দিয়ে নির্দিষ্ট করা গ্রুপ) মূল-সমতুল্য; দেখতে Docker ডেমন আক্রমণ সারফেস বিবরণ এবং এই ব্লগপোস্টটিকে কেন আমরা দেবেন না root- ব্যতীত ব্যবহারকারীদের সেন্টওএস, ফেডোরা, অথবা RHEL মধ্যে Docker চালানো (ধন্যবাদ মাইকেল-এন)।

গিটহাবের পরীক্ষামূলক রুটলেস মোডের সাম্প্রতিক প্রকাশে ইঞ্জিনিয়াররা উল্লেখ করেছেন যে রুটলেস মোড ডকার্ডকে একটি অনিবদ্ধ ব্যবহারকারী হিসাবে চলমান, ব্যবহারকারীর নাম-স্পেসেস (7), মাউন্ট_নামস্পেস (7), নেটওয়ার্ক_নামস্পেস (7) ব্যবহার করে allows

ব্যবহারকারীদের ডকার্ডের পরিবর্তে ডকারড -রোটলেস.শ চালাতে হবে।

$ dockerd-rootless.sh --experimental

রুটলেস মোড পরীক্ষামূলক হওয়ায় ব্যবহারকারীদের সর্বদা এক্সপেরিমেন্টাল দিয়ে ডকারড- রুটলেস.শ চালাতে হবে।


পড়তে গুরুত্বপূর্ণ: লিনাক্সের জন্য ইনস্টলেশন-পরবর্তী পদক্ষেপগুলি (এটি ডকার ডেমন আক্রমণ আক্রমণ পৃষ্ঠের বিশদের সাথেও লিঙ্ক করে )।

অ-রুট ব্যবহারকারী হিসাবে ডকার পরিচালনা করুন

ডকার ডিমন টিসিপি পোর্টের পরিবর্তে ইউনিক্স সকেটের সাথে আবদ্ধ হয়। ডিফল্টরূপে ইউনিক্স সকেটটি ব্যবহারকারীর রুটের মালিকানাধীন এবং অন্যান্য ব্যবহারকারীরা কেবল এটি সুডো ব্যবহার করে অ্যাক্সেস করতে পারবেন। ডকার ডেমন সর্বদা রুট ব্যবহারকারী হিসাবে চলে।

আপনি ডকার কমান্ডটি ব্যবহার করার সময় আপনি যদি সুডো ব্যবহার করতে না চান, ডকার নামে একটি ইউনিক্স গ্রুপ তৈরি করুন এবং এতে ব্যবহারকারীদের যুক্ত করুন। ডকার ডেমন শুরু হয়ে গেলে এটি ইউনিক্স সকেটের মালিকানা ডকার গ্রুপ দ্বারা পঠনযোগ্য / লিখনযোগ্য করে তোলে।


  • ডকার গ্রুপটি ইতিমধ্যে বিদ্যমান না থাকলে যুক্ত করুন:

    sudo groupadd docker
    
  • সংযুক্ত ব্যবহারকারী "$ USER" ডকার গ্রুপে যুক্ত করুন। আপনি যদি আপনার বর্তমান ব্যবহারকারী ব্যবহার করতে না চান তবে আপনার পছন্দসই ব্যবহারকারীর সাথে মেলে ব্যবহারকারীর নাম পরিবর্তন করুন:

    sudo gpasswd -a $USER docker
    
  • newgrp dockerগোষ্ঠীগুলিতে পরিবর্তনগুলি সক্রিয় করতে হয় বা লগ আউট / ইন করুন।

  • তুমি ব্যবহার করতে পার

    docker run hello-world
    

    আপনি sudo ছাড়া ডকার চালাতে পারেন কিনা তা পরীক্ষা করতে।


3
হ্যাঁ, তবে প্রতিটি সুবিধাযুক্ত প্রক্রিয়া শোষণের সম্ভাবনা খুলে দেয়। ডকার কি সেই অপারেটিং সিস্টেমের গভীরে সত্যই সেই স্তরের সুবিধাগুলি জানাতে বাধ্য হয়?
ম্যাট

3
newgrp dockerআমার জন্য কাজ করে না, আমাকে লগ আউট করতে হয়েছিল।
লোলমাস - আন্দ্রে মিখায়লভ

43
এটা তোলে যে ইশারা এই ব্যবহারকারীকে দেয় মূল্য অবাধ, অ-পাসওয়ার্ড সুরক্ষিত রুট এক্সেসদুর্বলতার
ক্রিস ফস্টার

2
এই পরিবর্তনটি হওয়ার জন্য আপনাকে ডকার ডেমন পুনরায় চালু করার দরকার নেই !! কেবলমাত্র এমন ব্যবহারকারী যা আপনি স্রেফ লগ আউট করেছেন তারপরে আবার প্রবেশ করুন
টমি

4
যদি আপনি ব্যবহার docker login, আপনি খুঁজে পেতে পারেন যে .dockerআপনার হোম ফোল্ডারে নির্মিত ফোল্ডার জন্যে root। এইভাবে আপনি এই সতর্কতাটি সম্মুখীন হবে যখন Docker কমান্ড চলমান: WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied। আমি আমার ব্যবহারকারীর তৈরি .dockerফোল্ডারের তাই মত উবুন্টু ছাড়া অ্যাক্সেসযোগ্য: sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker। The chgrpযদিও সাহায্য করার জন্য মনে হয়নি, তাই সম্ভবত আমি শুধু chown পদক্ষেপ সুপারিশ করা উচিত নয়।
বার্চ্লাবস

202

ডকার কমান্ডটি চালনা ছাড়াই sudoআপনাকে আপনার ব্যবহারকারীকে (যাদের মূল অধিকার রয়েছে) ডকার গ্রুপে যুক্ত করতে হবে। এই রান কমান্ড নিম্নলিখিত চালনার জন্য:

 sudo usermod -aG docker $USER

এখন, ব্যবহারকারী লগআউট করুন এবং আবার লগইন করুন। এই সমাধানটি এখানে সঠিক ইনস্টলেশন প্রক্রিয়া সহ ভালভাবে ব্যাখ্যা করা হয়েছে


14
ব্যবহারকারীদের দলে যোগ করার পরে এই কমান্ডটি চালান: এসএজি গ্রুপ_নাম -সি "বাশ"
মাদজারি

4
এই পরিবর্তনটি হওয়ার জন্য আপনাকে ওএস পুনরায় চালু করার দরকার নেই! যে সমস্ত চলমান পাত্রে বোমা ফেলবে! আপনি কেবলমাত্র তখনই লগ আউট করার জন্য ব্যবহারকারীর প্রবেশ করুন
টমি

5
এই আদেশটি কীভাবে অন্য উত্তরে "sudo gpasswd -a? {USER} docker" এর থেকে আলাদা? যদি
অ্যাশলে আইটেন

9
আপনি কি দয়া করে দস্তাবেজের দ্বারা প্রদত্ত সতর্কতাটি যুক্ত করতে পারেন: "ডকার গ্রুপ [...] মূল-সমতুল্য", তাই লোকেরা এটি সম্পর্কে চিন্তাভাবনা করার সুযোগ
মার্মেল

2
2 বছরের পুরানো স্বীকৃত উত্তর হিসাবে একই প্রভাব, তবে সুরক্ষা ঝুঁকি সম্পর্কে সতর্কতা ছাড়াই
গার্ট ভ্যান ড্যান বার্গ

56

যে পদ্ধতির মাধ্যমে কোনও ব্যবহারকারীকে গ্রুপে যুক্ত করে dockerডকার চালানোর অনুমতি দেয় তা হল ডকারের সকেটে অ্যাক্সেস পাওয়া /var/run/docker.sock। যদি থাকে এমন ফাইল সিস্টেমটি যদি /var/runএসিএল সক্ষম করে থাকে তবে এটি এসিএলগুলির মাধ্যমেও অর্জন করা যেতে পারে।

sudo setfacl -m user:$USER:rw /var/run/docker.sock

আমি কেবল এটি সম্পূর্ণতার জন্য অন্তর্ভুক্ত করছি।

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

সতর্কতা 1 : এটি গ্রুপে rootযুক্ত usernameকরার মতো সমতুল্য dockerrootহোস্ট ফাইল সিস্টেমে অ্যাক্সেস রয়েছে এমনভাবে আপনি এখনও একটি ধারক শুরু করতে পারেন ।

সতর্কতা 2 : এসিএলগুলি গ্রুপ-ভিত্তিক সুরক্ষার চেয়ে সুরক্ষা নিরীক্ষণের জন্য উল্লেখযোগ্যভাবে বেশি কঠিন। কমপক্ষে নিরীক্ষণ-প্রাসঙ্গিক পরিবেশে আপনি যখন গ্রুপগুলি ব্যবহার করতে পারেন তখন সম্ভবত এসিএলগুলি এড়িয়ে চলুন।


5
এটি 16.04
এডিবি

এটিই আমার প্রয়োজন, অন্যান্য উত্তরগুলির জন্য ব্যবহারকারীর রুট অনুমতি থাকা দরকার। ধন্যবাদ অনেক কিছু!
মৃণাল সৌরভ

1
অনেক ভাল উপায় ইমো। গ্রুপ ডকার মূল-সমতুল্য এবং এটি সর্বদা বিপদের লক্ষণ। এবং এই একটি ফাইলের মালিকানা নিতে আমি কোনও অসুবিধা দেখতে পাচ্ছি না।
জেরাস

5
@ জেরুস যদি আমি সঠিকভাবে বুঝতে পারি তবে যে কেউ এই সকেটে লিখতে পারেন তিনিও মূল-সমতুল্য সুযোগ-সুবিধা পেতে পারেন । সুতরাং কাউকে এসিএলের মাধ্যমে এই সকেটে অ্যাক্সেস দেওয়ার একই সুরক্ষা প্রভাব রয়েছে সেই ব্যক্তিকে ডকার গ্রুপে যুক্ত করার মতো।
পাওলো ইবারম্যান

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