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

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

docker ps

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

sudo docker.io ps

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

সুসংবাদ: নতুন ডকার (সংস্করণ 19.03 (বর্তমানে পরীক্ষামূলক)) রুট ব্যবহারকারী ব্যবহার করে যে সমস্যাগুলি দেখা দিতে পারে তা অস্বীকার করে রুটলেস চালাতে সক্ষম হবে কোন উঁচু অনুমতি, রুট এবং কিছু যে আপনার মেশিন খুলুন পারে যখন আপনি চান না সঙ্গে তালগোল পাকানো.

এই সম্পর্কে ভিডিও থেকে [ডকারকন 2019] রুটলেস মোডের সাথে ডকার ডেমন শক্ত করা

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

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

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

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

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

অ রুট অ্যাক্সেস প্রদান

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

0.5.3 সংস্করণে শুরু করে, যদি আপনি (বা আপনার ডকার ইনস্টলার) ডকার নামে একটি ইউনিক্স গ্রুপ তৈরি করেন এবং এতে ব্যবহারকারীদের যুক্ত করেন, তবে ডকার ডেমন ইউনিক্স সকেটের মালিকানা ডকার গ্রুপ দ্বারা পড়তে/লিখনযোগ্য করে তুলবে যখন ডেমন শুরু হয় ডকার ডেমন সর্বদা রুট ব্যবহারকারী হিসাবে চলতে হবে, তবে আপনি যদি ডকার গ্রুপে ব্যবহারকারী হিসাবে ডকার ক্লায়েন্ট চালান তবে আপনাকে সমস্ত ক্লায়েন্ট কমান্ডে সুডো যুক্ত করার দরকার নেই 0.9.0 হিসাবে, আপনি ডকার ছাড়া অন্য একটি গ্রুপ-জি বিকল্পের সাথে ইউনিক্স সকেটের মালিক হওয়া উচিত তা নির্দিষ্ট করতে পারেন

সতর্কতা: ডকার গ্রুপ (বা এর সাথে নির্দিষ্ট গ্রুপ-জি) মূল-সমতুল্য; দেখা ডকার ডেমন আক্রমণ পৃষ্ঠের বিশদ এবং এই ব্লগ পোস্ট কেন আমরা নন-রুট ব্যবহারকারীদের সেন্টোস, ফেডোরা বা আরএইচএলে ডকার চালাতে দিই না (ধন্যবাদ মাইকেল-এন).

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

ব্যবহারকারীদের চালানো প্রয়োজন dockerd-rootless.sh ডকারডের পরিবর্তে

$ dockerd-rootless.sh --experimental

রুটলেস মোড পরীক্ষামূলক হওয়ায় ব্যবহারকারীদের সর্বদা চালানো দরকার dockerd-rootless.sh সঙ্গে-পরীক্ষামূলক.


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

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

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

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


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

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

     sudo gpasswd -a $USER docker
  • হয় একটি newgrp docker অথবা গ্রুপ পরিবর্তন সক্রিয় করতে লগ আউট/ইন.

  • আপনি ব্যবহার করতে পারেন

     docker run hello-world

    আপনি সুডো ছাড়া ডকার চালাতে পারেন কিনা তা পরীক্ষা করতে

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

 sudo usermod -aG docker $USER

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

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

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

আমি শুধুমাত্র সম্পূর্ণতার জন্য এই সহ করছি.

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

সতর্কতা 1: এই একই আছে root যোগ হিসাবে সমতা $USER যাও docker গ্রুপ. আপনি এখনও একটি ধারক একটি উপায় শুরু করতে পারেন root হোস্ট ফাইল সিস্টেম অ্যাক্সেস.

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

ডকার গ্রুপ তৈরি করার পরে এবং এর সাথে আমার ব্যবহারকারীকে যুক্ত করার পরে

sudo groupadd dockersudo usermod -aG docker $USER

... আমি এখনও দিতে ছিল /var/run/docker.sock সকেট এবং /var/run/docker এটি কাজ করতে সঠিক অনুমতি ডিরেক্টরি:

sudo chown root:docker /var/run/docker.socksudo chown -R root:docker /var/run/docker

লগআউট এবং আবার লগইন করুন (সেই ব্যবহারকারীর সাথে) তারপরে আপনি ছাড়াই ডকার কমান্ড চালাতে সক্ষম হবেন sudo:

docker run hello-world

ডকার পাত্রে একটি রুট ব্যবহারকারী দ্বারা চালানো প্রয়োজন. আপনি নিজেকে যুক্ত করতে পারেন docker গ্রুপ (যেমন চলমান দ্বারা sudo usermod -aG docker $USER), তবে এটি অ্যাক্সেস সহ যে কারও পক্ষে সহজ করে তোলে $USER অ্যাকাউন্ট মেশিনে রুট অ্যাক্সেস লাভ (যেমন একটি তৈরী কন্টেইনারে একটি রুট ভলিউম মাউন্ট দ্বারা).

নন-রুট ব্যবহারকারী হিসাবে ডকার পাত্রে চালানোর আরও সুরক্ষা-সচেতন উপায় হ ' ল পডম্যান ব্যবহার করা: https://podman.io/. তার ওয়েবসাইট থেকে:

পোডম্যান আপনার লিনাক্স সিস্টেমে ওসিআই পাত্রে বিকাশ, পরিচালনা এবং চালানোর জন্য একটি ডিমোনলেস কনটেইনার ইঞ্জিন পাত্রে হয় রুট বা ইন হিসাবে চালানো যেতে পারে রুটলেস মোড. সহজভাবে করা: alias docker=podman.

আর একটি বিকল্প হ ' ল এককতা, যা সাধারণত এইচপিসি পরিবেশে স্থাপন করা হয়: https://sylabs.io/.

কিভাবে একটি উপনাম সম্পর্কে:? এইভাবে, আপনি এখনও পাসওয়ার্ড সুরক্ষা সহ সুডো ব্যবহার করেন এলিয়াস ডকার="সুডো ডকার "

ইউএফডাব্লু সক্ষম করতে ভুলবেন না :wink:

উবুন্টু 14.04 আছে এছাড়াও’ ডকার ’ বাইনারি.

প্রস্তাবিত ইনস্টলেশনটি ডিফল্ট উবুন্টু রেপোসে ডকার _ নন_; পরিবর্তে, নির্দেশাবলী এখানে ( Redirecting…), ডকার রেপো ব্যবহার করার পরামর্শ দিন বিদ্যমান সমস্ত ডকার স্টাফ সরান এবং যাচাই করুন যে আপনি সঠিক উত্স থেকে একটি পেয়েছেন: এপিটি-ক্যাশে নীতি ডকার-ইঞ্জিন ' এপিটি ইউআরএল থেকে হওয়া উচিত dockerproject.org)

ডকার ইনফো ' এর মতো সাধারণ জিনিসগুলি করার জন্য মূলের প্রয়োজনের জন্য এটি কী জাঙ্ক? ভালো লেগেছে ডকার তথ্য` চালানোর সব আমার ফাইল এবং ডিভাইস এবং পোর্ট কাঁচা এক্সেস প্রয়োজন.

@ আনাতোলিটেচটনিক আমি ‘ডকার’ এর পরিবর্তে ‘ডকার’ ব্যবহার করেছি docker.io ’ উবুন্টু 14.04 এলটিএসে

হাঁ, ডকার নীতিকিট বা অনুরূপ কিছু প্রয়োগ না হওয়া পর্যন্ত আমি দৃঢ়ভাবে একটি উপনাম ব্যবহার করে কথা বলতে চাই, অন্যথায় আপনি ভাল হিসাবে শুধু রুট হিসাবে সবকিছু চালাতে পারে.

সুডো সিএইচএমওডি 666 / ভার / রান / ডকারমোজা