ডকারের ধারকের ভিতরে রুট পাসওয়ার্ড


264

আমি ডকার ইমেজ ব্যবহার করছি যা USER-র কমান্ডটি ব্যবহার করে একটি অ-রুট ব্যবহারকারী নামক ব্যবহার করে নির্মিত হয়েছিল dev। একটি ধারকের ভিতরে, আমি "দেব", তবে আমি /etc/hostsফাইলটি সম্পাদনা করতে চাই ।

সুতরাং আমি মূল হতে হবে। আমি su কমান্ড চেষ্টা করছি, তবে আমাকে মূল পাসওয়ার্ড লিখতে বলা হচ্ছে।

ডকার পাত্রে ডিফল্ট রুট ব্যবহারকারীর পাসওয়ার্ড কী?


11
শুধু একটি রুট হিসাবে Exec: docker exec -u 0 -it mycontainer bash। ( H6এর উত্তর দেখুন)
সাওওমির লেনার্ট

উত্তর:


494

আপনি -uবিকল্পটি ব্যবহার করার সময় প্রদত্ত ডিফল্ট ব্যবহারকারীর পরিবর্তে রুট ব্যবহারকারী (আইডি = 0) ব্যবহার করে ডকার পাত্রে লগ ইন করতে পারেন । যেমন

docker exec -u 0 -it mycontainer bash

রুট (আইডি = 0) একটি ধারক মধ্যে ডিফল্ট ব্যবহারকারী। চিত্র বিকাশকারী অতিরিক্ত ব্যবহারকারী তৈরি করতে পারে। এই ব্যবহারকারীরা নাম দ্বারা অ্যাক্সেসযোগ্য। একটি সংখ্যার আইডি পাস করার সময়, ধারকটিতে ব্যবহারকারীর অস্তিত্ব থাকতে হবে না।

ডকার ডকুমেন্টেশন থেকে


5
আপনি উপরোক্ত কমাড টাইপ করার সময় আপনার মাইকন্টেইনার আপ এবং চলমান হওয়া দরকার তা নির্দিষ্ট করে বলা উচিত। এটি 2 টি বিভিন্ন টার্মিনাল ব্যবহার করে কাজ করে: একটি মাইকন্টেইনার এবং অন্যটি এই কমান্ডের জন্য। অন্যথায় এটি প্রয়োজন যে মাইকন্টেইনারটি বিযুক্ত হিসাবে চলমান।
নিকোলিমো 86

6
চিত্রগুলির জন্য, ব্যবহার করুনdocker run -u 0 -it mycontainer bash
পাভেল 'পিকে' কামিনস্কি

2
এই উত্তরটি উপরে থাকা উচিত
ডি পিন্টো

1
@ High6, যখন আপনি বলে "তুমি Docker ইমেজে লগ ইন করতে পারেন ...", আমি মনে করি আপনি কি বলতে চান "আপনি Docker মধ্যে লগ ইন করতে পারেন কনটেইনার "।
lmiguelvargasf

এটি কি সর্বদা সম্ভব? নাকি এটিকে অবরুদ্ধ করা যায়?
স্যাম টমাস

82

অবশেষে, আমি আমার ডকারের চিত্রগুলি পুনর্নির্মাণ করার সিদ্ধান্ত নিয়েছি, যাতে আমি কোনও কিছু জানতে পেরে রুট পাসওয়ার্ডটি পরিবর্তন করি change

RUN echo 'root:Docker!' | chpasswd

অথবা

RUN echo 'Docker!' | passwd --stdin root 

5
আমি এটি চেষ্টা করেছি কিন্তু এটি আমার সেন্টস 6 ভিত্তিক ডকারে কাজ করে না। এই কমান্ডটি সেন্টোস ভিত্তিক ডকারে কাজ করে?
ড্রাগন নিকোলিক

28

এটি করার কয়েকটি উপায় রয়েছে।

  1. ব্যবহারকারী সেটিংসকে ওভাররাইড করে ডকার চালানো

    docker exec -u 0 -it containerName bash
    

অথবা

docker exec -u root -it --workdir / <containerName> bash
  1. ডকার ফাইলে চিত্র তৈরির সময় প্রয়োজনীয় ফাইল অনুমতি ইত্যাদি তৈরি করুন Make

  2. সমস্ত প্যাকেজগুলি যদি আপনার লিনাক্স ইমেজে পাওয়া যায়, chpasswdতবে ইউএসএল ইউটিলিটির আগে ডকফেরাইলে।



23

আমি এটি নীচের কমান্ডটি দিয়ে কাজ করতে সক্ষম হয়েছি।

root@gitnew:# docker exec -it --user $(username) $(containername) /bin/bash

18

রুট করতে সক্ষম না হবার আমার ঠিক এই সমস্যাটি ছিল কারণ আমি একটি অনিবদ্ধ ব্যবহারকারী হিসাবে কনটেইনারটিতে চলছিলাম।

তবে পূর্বের উত্তরগুলির মতো আমি কোনও নতুন চিত্র পুনর্নির্মাণ করতে চাইনি।

পরিবর্তে আমি খুঁজে পেয়েছি যে আমি 'ন্যান্সটার' ব্যবহার করে রুট হিসাবে ধারকটি অ্যাক্সেস করতে পারি, দেখুন: https://github.com/jpetazzo/nsenter

প্রথমে হোস্টটিতে আপনার ধারকটির পিআইডি নির্ধারণ করুন:

docker inspect --format {{.State.Pid}} <container_name_or_ID>

তারপরে রুট হিসাবে ধারক প্রবেশ করতে নেসেন্টার ব্যবহার করুন

nsenter --target <PID> --mount --uts --ipc --net --pid

1
বুট 2 ডকার ব্যবহার করে, আমাকে ব্যবহার করতে হয়েছিলsudo nsenter --target <PID> --mount --uts --ipc --net --pid
পিটার

হ্যাঁ, ভাল কথা। ডকার কমান্ডগুলি কার্যকর করতে আপনার সাধারণত রুট অনুমতি প্রয়োজন এবং আমার ধারণা এনসেনটার একই। আমি আমার উত্তরে এটি পুরোপুরি পরিষ্কার করিনি।
রিচার্ড করফিল্ড

4
যেহেতু এই উত্তরটি লেখা হয়েছিল, ডকার মূলত ন্যানসেটর হিসাবে একই কাজটি করার জন্য এক্সিকিউট কমান্ড যুক্ত করেছেন তবে সহজ এবং ক্লিনার। যারা এখন অনুসন্ধানের মাধ্যমে এই প্রশ্নটি খুঁজে পান তাদের জন্য কেবল একটি ডেটা পয়েন্ট। কমান্ডটি হ'ল "ডকার এক্সিকিউটিট <কনটেনারনাম> <কম্যান্ড>" (কমান্ডটি সাধারণত / বিন / বাশ হয়, তবে আপনি অবশ্যই যা করতে পারেন তা করতে পারেন)।
কেভিন কেইন

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


9

আপনার চলমান ধারকটির শেল পান এবং মূল পাসওয়ার্ডটি পরিবর্তন করুন:

docker exec -it <MyContainer> bash

root@MyContainer:/# passwd
Enter new UNIX password:
Retype new UNIX password:

9

চলমান পাত্রে একটি রুট পাসওয়ার্ড তৈরি / পরিবর্তন করতে

docker exec -itu root {containerName} passwd

5

পাসওয়ার্ডটি 'উবুন্টু' ব্যবহারকারীর জন্য 'উবুন্টু' (কমপক্ষে উবুন্টুর জন্য ডকারে: 14.04.03)।

নোট: কনটেইনারটি শুরু হওয়ার পরে 'উবুন্টু' তৈরি করা হয়েছে, যদি আপনি কেবল এটি করেন:

 docker run -i -t --entrypoint /bin/bash  ubuntu     

আপনি সরাসরি রুট প্রম্পট পাবেন। সেখান থেকে আপনি রুটের পাসওয়ার্ড পরিবর্তনকে বাধ্য করতে পারেন, ধারকটি প্রতিশ্রুতিবদ্ধ করতে পারেন এবং এটি (-f) এর সাথে উবুন্টুতে ট্যাগ করতে পারেন: সর্বশেষের মতো:

root@ec384466fbbb:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@ec384466fbbb:~# exit

% docker commit ec3844
5d3c03e7d6d861ce519fe33b184cd477b8ad03247ffe19b2a57d3f0992d71bca

docker tag -f 5d3c ubuntu:latest

আপনাকে অবশ্যই উবুন্টুতে সর্বশেষ নির্ভরতা পুনর্নির্মাণ করতে হবে: সর্বশেষ।


3

আমি একটি ভাল সমাধান পরামর্শ দিচ্ছি --add-host NAME:IPযে ধারকটি শুরু করার সময় ডকার রানকে যুক্তি দেওয়া। /etc/hosts/এটি রুট হওয়ার কোনও প্রয়োজন ছাড়াই ফাইল আপডেট করবে ।

অন্যথায়, আপনি পতাকাটি দিয়ে USERসেটিংসটিকে ওভাররাইড করতে পারেন । তবে আমি এর বিরুদ্ধে পরামর্শ দেব, কারণ আপনার চলমান পাত্রে জিনিসগুলি পরিবর্তন করা উচিত নয়। পরিবর্তে, ডকফাইফায়লে আপনার পরিবর্তনগুলি তৈরি করুন এবং একটি নতুন চিত্র তৈরি করুন।-u USERdocker run


ধারক চলমান অবস্থায় আমাকে হোস্ট ফাইলে এন্ট্রি যুক্ত করতে হবে।
গিলিয়াম

আমারও নতুন প্যাকেজ ইনস্টল করা দরকার তবে আমি রুট না হয়েও পারি না।
গিলিয়াম

1
আপনি -uব্যবহারকারী পরিবর্তন করতে পতাকা ব্যবহার করতে পারেন । আমি মনে করি না আপনি এটি পাত্রে ভিতরে থেকে করতে পারেন।
অ্যাড্রিয়ান মৌআত


2

আপনি যখন ধারকটি শুরু করবেন, আপনি রুট হবে তবে রুটের পিডব্লু কি তা আপনি জানতে পারবেন না। এটিকে এমন কিছুতে সেট করতে আপনি জানেন যে কেবল "পাসডাব্লুড রুট" ব্যবহার করুন। আপনার ক্রিয়াকলাপগুলি সংরক্ষণ করার জন্য ধারকটিকে স্ন্যাপশট / প্রতিশ্রুতিবদ্ধ।


1

ডিফল্টরূপে ডকার পাত্রে rootব্যবহারকারী হিসাবে চালিত হয় ।

আপনি যদি এখনও ধারকটি ব্যবহার করে থাকেন তবে আপনি exitফিরে যেতে কমান্ডটি ব্যবহার করতে পারেনroot আবার ধারকটি চালানোর পরিবর্তে (ডিফল্ট ব্যবহারকারী) ব্যবহারকারীর ।

উদাহরণ -

[dev@6c4c86bccf93 ~]$ ls
[dev@6c4c86bccf93 ~]$ other-commands..
[dev@6c4c86bccf93 ~]$ exit
[root@6c4c86bccf93 /]# ls

0

রুট অ্যাক্সেস পেতে নিম্নলিখিত কমান্ডটি ব্যবহার করে দেখুন

$ sudo -i 

সুডো অ্যাক্সেস সহ ধারক সেটআপে আপনার অ্যাকাউন্ট না থাকলে এটি কাজ করার সম্ভাবনা কম। এটি একটি অস্বাভাবিক পরিস্থিতি হবে এবং ধারকটি চালাচ্ছে এমন একটি নন-রুট ব্যবহারকারী থাকার বিষয়টি ভঙ্গ করবে।
যোশিয়াহ

ডকার ইনস্টলের জন্য যে কেউ ডিফল্ট এস পাসওয়ার্ড জানেন? আমি উচ্চতা চালানোর চেষ্টা করেছি এবং সেখানে একটি সেট রয়েছে।
প্যাট্রিক বারওয়েল

ডকার চিত্রটি রফতানি করার পরে এবং ডাব্লুএসএল 2 এ আমদানির পরে এটি ডাব্লুএসএল 2 এ কাজ করেছিল। সেখান থেকে, পাসওয়ার্ডটি রুটের জন্য পাসওয়ার্ড সেট করতে করুন। রুটবিহীন ব্যবহারকারীর কাছে ফিরে প্রস্থান করুন এবং sudo su বা su চেষ্টা করুন। এটি এখন কাজ করবে।
WSLUser

0

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

RUN apt-get update         # If necessary
RUN apt-get install sudo   # If your base image does not contain sudo.
RUN useradd -m -N -s /bin/bash -u 1000 -p '$1$miTOHCYy$K.c4Yw.edukWJ7z9rbpTZ0' user && \
    usermod -aG sudo user  # Grant sudo to the user
USER user

এখন ডিফল্ট চিত্র ব্যবহারকারীর অধীনে userআপনি sudo3 লাইনে থাকা পাসওয়ার্ডটি সক্ষম করতে পারবেন with

কীভাবে useradd এখানে বা এখানে পাসওয়ার্ড হ্যাশ তৈরি করা যায় তা দেখুন ।

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