এই প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে, তবে এখানে তথ্যের একটি অতিরিক্ত অংশ রয়েছে।
আপনি আর্কে বা ফেডোরা বা উবুন্টুর মতো অন্য বিতরণে থাকুন না কেন, ডকার যোগাযোগের জন্য সকেট ফাইল ব্যবহার করেন। আপনি যখন docker
কমান্ডগুলি চালনা করেন , এটি ডকার ডিমনটির সাথে কথা বলতে এই সকেটটি ব্যবহার করে। অবশ্যই ডেমনটি চলমান থাকতে হবে (এবং এটি প্রায়শই ডিফল্টরূপে অক্ষম থাকে) তবে আপনার ব্যবহারকারী যদি সকেটটি অ্যাক্সেস করতে না পারে তবে এটি ডিমনটির সাথে যোগাযোগ করতে সক্ষম হবে না।
আপনি প্রথমে বিতরণের সংগ্রহস্থল থেকে ডকার ইনস্টল করবেন। কিছু লোক একটি ইনস্টল স্ক্রিপ্ট ডাউনলোড করে শেল ( curl ... | sh
) এ এটি পাইপ করে তবে এটি সহজেই আপডেট করা যায় তার জন্য এটি সংগ্রহস্থল থেকে ইনস্টল করার পরামর্শ দেওয়া হয়।
আর্চ:
# pacman -S docker
ফেডোরা:
# dnf install docker
উপরে উল্লিখিত হিসাবে, ডিমনটি ডিফল্টরূপে অক্ষম হতে পারে। আপনি যদি ডকার ব্যবহার করতে চান তবে ডিমনটি চলমান থাকতে হবে।
এটি সক্ষম করুন (যাতে এটি বুটে শুরু হবে):
# systemctl enable docker
এখনই এটি শুরু করুন (বা রিবুট করুন):
# systemctl start docker
এখন, ডিফল্টরূপে (যদি ডকার গ্রুপটি অনুপস্থিত), ডকার সকেটটি রুটের মালিকানাধীন:
# ls -la /var/run/docker.sock
srw-rw---- 1 root root 0 Apr 28 17:22 /var/run/docker.sock
এই কারণেই একজন নিয়মিত ব্যবহারকারী ডকার ডেমনের সাথে কথা বলতে পারছেন না। একজন নিয়মিত ব্যবহারকারীর সকেট অ্যাক্সেস করার জন্য পর্যাপ্ত অনুমতি নেই। এটি ডিমন পৌঁছাতে সক্ষম নয়, সুতরাং এটি ধরেছে যে এটি চলছে না এবং এই ত্রুটিটি দেখায়:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
এ কারণেই অনেকে ব্যবহার করে রুট হিসাবে সমস্ত ডকার কমান্ডগুলি সহজভাবে শুরু করে sudo
। তবে অন্য উত্তরে বর্ণিত হিসাবে, ডকারের এটির জন্য নিজস্ব ব্যবস্থা আছে, সুতরাং sudo ব্যবহার করা প্রয়োজন নয়।
আদর্শভাবে, docker
ডকার ইনস্টল করার সময় একটি গোষ্ঠী তৈরি করা হয়। যাইহোক, ডিমনটি শুরু করার পরে যদি সেই গোষ্ঠীটি উপস্থিত না থাকে তবে সকেট ফাইলটি রুটের মালিকানাধীন।
কিছু ক্ষেত্রে, সেই গোষ্ঠীর dockerroot
ফেডোরার মতো আলাদা নাম ছিল । grep docker /etc/group
আপনার সিস্টেমে এরকম একটি গ্রুপ আছে কিনা তা পরীক্ষা করে দেখুন। আপনি যদি ইতিমধ্যে সেই গোষ্ঠীটি ব্যবহার করেন (আপনার ব্যবহারকারী এতে আছেন) তবে এটি ব্যবহারের জন্য আপনাকে ডকারকে কনফিগার করতে হবে:
ইন /etc/sysconfig/docker
, যোগ করুন -G dockerroot
(দ্রষ্টব্য: এটি কার্যকরভাবে সমাধান, সেরা সমাধান নয়):
OPTIONS='--selinux-enabled -G dockerroot'
ডেমন পুনরায় চালু করার পরে, আপনার ব্যবহারকারী সকেট অ্যাক্সেস করতে সক্ষম হবেন:
# systemctl restart docker
# ls -la /var/run/docker.sock
srw-rw---- 1 root dockerroot 0 Apr 28 17:32 /var/run/docker.sock
অন্যথায়, সরকারী উপায় হ'ল বলা গ্রুপটি ব্যবহার করা docker
। যদি এটি বিদ্যমান থাকে তবে ডকার স্বয়ংক্রিয়ভাবে এটি ব্যবহার করবে, অর্থাৎ সকেটের গোষ্ঠীকে সেই গোষ্ঠীতে সেট করবে। যদি এটি বিদ্যমান না থাকে, আপনাকে কেবল এটি তৈরি করতে হবে এবং ডেমোনটি পুনরায় চালু করতে হবে:
# groupadd docker
# systemctl restart docker
সকেট ফাইলটি সেই গোষ্ঠীর মালিকানাধীন থাকবে:
# srw-rw---- 1 root docker 0 Apr 28 17:42 /var/run/docker.sock
docker
সকেট অ্যাক্সেস করতে সক্ষম হতে আপনার ব্যবহারকারীকে অবশ্যই গ্রুপে থাকতে হবে:
# usermod -aG docker (user)
আপনাকে লগ আউট করতে হবে এবং আবার (বা su - (user)
) আবার লগ ইন করতে হবে, আপনি দলে রয়েছেন id
কিনা তা দেখতে দৌড়াতে হবে।
তারপরে আপনি sudo / রুট ছাড়াই ডকার ব্যবহার করতে পারেন:
$ docker version --format '{{.Server.Version}}'
1.9.1
অবশেষে, সতর্কতার একটি শব্দ। কেবলমাত্র বিশ্বস্ত ব্যবহারকারীদেরই আপনার ডকার ডিমন নিয়ন্ত্রণ করার অনুমতি দেওয়া উচিত । Https://docs.docker.com/engine/security/security/ দেখুন ।
(তবে অবশ্যই, সূডোর ক্ষেত্রেও এটি একই - কেবলমাত্র বিশ্বস্ত ব্যবহারকারীদেরই এই দলে থাকা উচিত wheel
))