কীভাবে ডকার ঠিক করবেন: অনুমতির বিষয়টি অস্বীকার করেছে


299

আমি আমার মেশিনে ডকার ইনস্টল করেছি যেখানে আমার উবুন্টু ওএস রয়েছে। এর পরে আমি ডকার ইনস্টল করেছি, যখন আমি চালাব

sudo docker run hello-world

সব ঠিক আছে তবে sudoকমান্ডটি আরও সংক্ষিপ্ত করতে আমি শব্দটি আড়াল করতে চাই ।

আমি যদি কথাটি না দিয়ে কমান্ডটি লিখি sudo

docker run hello-world

এটি নিম্নলিখিতটি প্রদর্শন করে:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'.

আমি যখন চেষ্টা করার চেষ্টা করি তখনও এটি ঘটেছিল

docker-compose up

আমি কীভাবে এটি সমাধান করতে পারি?



উত্তর:


434

আপনি যদি ডকারকে নন-রুট ব্যবহারকারী হিসাবে চালাতে চান তবে আপনাকে এটি ডকার গ্রুপে যুক্ত করতে হবে।

  1. ডকার গ্রুপটি উপস্থিত না থাকলে তৈরি করুন
$ sudo groupadd docker
  1. আপনার ব্যবহারকারীকে ডকার গ্রুপে যুক্ত করুন।
$ sudo usermod -aG docker $USER
  1. নিম্নলিখিত কমান্ড বা লগআউট এবং আবার লগইন করুন এবং চালান (এটি কাজ করে না আপনাকে প্রথমে আপনার মেশিনটি পুনরায় বুট করতে হবে)
$ newgrp docker
  1. রুট ছাড়াই ডকার চালানো যায় কিনা তা পরীক্ষা করুন
$ docker run hello-world

ডকার অফিসিয়াল ডকুমেন্টেশন থেকে নেওয়া: ম্যানেজ-ডকার-অ-অ-রুট-ব্যবহারকারী user


70
তিনটি পদক্ষেপ কার্যকর করার পরেও আমার এখনও এই সমস্যাটি রয়েছে "(
আনন্দ

78
এটি কাজ করার জন্য আমাকে উবুন্টু 18 এ পুনরায় বুট করতে হয়েছিল - কেবল লগ আউট এবং লগ ইন ফিরে কাজ করা কার্যকর হয়নি।
হিজ 23:30 '

26
@হিজ পুনরায় বুট করার দরকার পড়ে না, ডকার পুনরায় চালু করা আমার পক্ষে যথেষ্ট ছিল। sudo systemctl restart docker
রাটল

5
দয়া করে নোট করুন যে dockerগোষ্ঠীতে থাকা নিয়মিত সুডো পলিসি এবং অডিটিং প্রয়োগ না করে মূলত মূল অ্যাক্সেসকে মঞ্জুরি দেয় । বিশদ এবং আলোচনার জন্য গিটহাব ইস্যু # 9976 দেখুন ।
রায়িক

13
ডকার পুনরায় চালু করা আমার পক্ষে কাজ করে নি, কেবল পুনরায় চালু করা হয়েছে (উবুন্টু 18.04)
জোয়াকিম লম্বা

359

একটি আপগ্রেড করার পরে আমি অনুমতি অস্বীকার পেয়েছি। 'এমকেবি' পোস্ট ইনস্টলের পদক্ষেপগুলি করার ফলে কোনও পরিবর্তন হয় না কারণ আমার ব্যবহারকারী ইতিমধ্যে 'ডকার' গ্রুপে ছিলেন; আমি এটি সফলভাবে ছাড়াই যেকোন উপায়ে দুবার চেষ্টা করি।

একটি অনুসন্ধান ঘন্টা পরে এই নিম্নলিখিত সমাধানের ফাইনালি কাজ করেছে:

sudo chmod 666 /var/run/docker.sock

সমাধান ওলশানস্ক থেকে এসেছিল ।

আপগ্রেডের মতো দেখতে 'ডকার' গোষ্ঠীর পর্যাপ্ত অনুমতি ছাড়াই সকেটটি পুনরায় তৈরি করুন।

সমস্যা

এই হার্ড chmod ওপেন সুরক্ষা গর্ত এবং প্রতিটি পুনরায় বুট করার পরে, এই ত্রুটিটি বার বার শুরু হয় এবং আপনাকে প্রতিবার উপরের কমান্ডটি পুনরায় কার্যকর করতে হবে। আমি একবার এবং সবসময় একটি সমাধান চাই। তার জন্য আপনার দুটি সমস্যা রয়েছে:

  • 1) এর সাথে সমস্যাSystemD : সকেটটি কেবল মালিকের 'রুট' এবং গোষ্ঠী 'রুট' দিয়ে তৈরি করা হবে।

    আপনি এই আদেশটি দিয়ে এই প্রথম সমস্যাটি পরীক্ষা করতে পারেন:

    ls -l /lib/systemd/system/docker.socket
    

    যদি সবকিছু ভাল হয় তবে আপনার ' root/docker' নয় ' root/root' দেখতে হবে ।

  • 2) গ্রাফিকাল লগইনে সমস্যা : /superuser/1348196/why-my-linux-account-only-belongs-to-one-group

    আপনি এই আদেশটি দিয়ে এই দ্বিতীয় সমস্যাটি পরীক্ষা করতে পারেন:

    groups
    

    যদি সবকিছু ঠিক থাকে তবে আপনার তালিকায় ডকার গ্রুপটি দেখতে হবে । কমান্ড চেষ্টা না হলে

    sudo su $USER  -c groups
    

    আপনি যদি ডকার গ্রুপটি দেখতে পান তবে এটি বাগের কারণে।

সলিউশন

আপনি যদি গ্রাফিকাল লগইনের জন্য কোনও কাজের জন্য পরিচালনা করেন তবে এই কাজটি করা উচিত:

sudo chgrp docker /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket

তবে আপনি যদি এই বাগটি পরিচালনা করতে না পারেন তবে একটি খারাপ সমাধান এটি হতে পারে:

sudo chgrp $USER /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket

এই কাজটি কারণ আপনি গ্রাফিকাল পরিবেশে এবং সম্ভবত আপনার কম্পিউটারে একমাত্র ব্যবহারকারী। উভয় ক্ষেত্রেই আপনাকে একটি রিবুট প্রয়োজন (বা একটি sudo chmod 666 /var/run/docker.sock)


2
যদি ডকস.ডোকার.ইনস্টল-এ ডক হিসাবে ইনস্টল করা থাকে তবে আপনার কখনই এরকম কোনও আদেশের সাথে ডিল করার দরকার নেই
স্কট স্টেনসল্যান্ড

4
@ স্কট স্টেনসল্যান্ড আমি ডক হিসাবে অনেক সময় ডকার ইনস্টল করেছি। আমি মনে করি সমস্যাটি অন্য একটি অজানা প্যাকেজটির সাথে খারাপ মিথস্ক্রিয়া থেকে এসেছে।
গালিগেটর

1
ডকার-ইন-ডকারে, আমি শেষ পর্যন্ত হোস্ট থেকে ভুলভাবে /var/run/docker.sock মাউন্ট করছিলাম :ro... যত তাড়াতাড়ি আমি যুক্ত করেছি যে আমি যেতে ভাল ছিলাম
jakebrinkmann

2
আমি ইসি 2 - ওডাব্লুএস-এ উবুন্টু 18 ব্যবহার করি এবং প্রাকৃতিকভাবে কাজ করি। অন্য সমস্ত (sudo usermod -aG ডকার-ব্যবহারকারী এবং অন্যান্য সামগ্রী) কাজ করেনি
চেরাহ 30

1
ধন্যবাদ, এটি উবুন্টু 18.04 এলটিএসে স্থির হয়েছে। বিশ্রাম দেওয়া এবং
গ্রোডে

32
  1. ডকার গ্রুপ যুক্ত করুন
$ sudo groupadd docker
  1. আপনার বর্তমান ব্যবহারকারীকে ডকার গ্রুপে যুক্ত করুন
$ sudo usermod -aG docker $USER
  1. সেশনটি ডকার গ্রুপে স্যুইচ করুন
$ newgrp - docker
  1. পরীক্ষা করার জন্য একটি উদাহরণ চালান
$ docker run hello-world

newgrpকমান্ড একটি পাসওয়ার্ড চাওয়া এবং আমার ব্যবহারকারী পাসওয়ার্ড স্বীকার করেনি। পরিবর্তে su - $USERলগ আউট / ইন এড়াতে কাজ করেছে।
bluenote10

18
  1. বর্তমান ব্যবহারকারীর যোগ dockerগ্রুপ
sudo usermod -aG docker $USER
  1. ডকার ডিমনের সাথে সংযোগ স্থাপনের জন্য ডকার সকেটের অনুমতিগুলি পরিবর্তন করুন /var/run/docker.sock
sudo chmod 666 /var/run/docker.sock

15

আমি এই ত্রুটিটি আদেশটি দিয়ে সমাধান করি:

$ sudo chmod 666 /var/run/docker.sock

9

আপনি সর্বদা https://docs.docker.com/install/linux/linux-postinstall/ ডক্সে Manage Docker as a non-root userঅনুচ্ছেদে চেষ্টা করতে পারেন ।

এটি করার পরেও যদি সমস্যাটি অব্যাহত থাকে তবে এটি সমাধান করার জন্য আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

sudo chmod 666 /var/run/docker.sock

2
প্রত্যেকের (সহ chmod 666) ডকার সকেটকে পাঠযোগ্য বা লিখনযোগ্য তৈরি করা একটি সুরক্ষা বিপর্যয় ... এটি কখনই সুপারিশ করা উচিত নয়।
আয়লা সেকুরা

6

ইউনিক্সে ডকার ডেমন সকেটের সাথে সংযোগের চেষ্টা করার সময় অনুমতি অস্বীকার করা হয়েছে: ///var/run/docker.sock: http: //%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json : ডায়ল ইউনিক্স পান /var/run/docker.sock: সংযোগ: অনুমতি অস্বীকার করা হয়েছে

sudo chmod 666 /var/run/docker.sock

এই আমার সমস্যা ঠিক।


2

এই সমস্যাটি সমাধান করতে, আমি অনুসন্ধান করেছি যে আমার ডকার এবং ডকার-রচনাটি কোথায় ইনস্টল করা আছে। আমার ক্ষেত্রে, dockerমধ্যে ইনস্টল করা ছিল /usr/bin/dockerএবং docker-composeএ ইনস্টল করা ছিল /usr/local/bin/docker-composeপথ। তারপরে, আমি আমার টার্মিনালে এটি লিখি:

ডক করতে:

sudo chmod +x /usr/bin/docker

প্রতি docker-compose:

sudo chmod +x /usr/local/bin/docker-compose

এখন আমার কমান্ডগুলিতে শব্দটি ডক করার দরকার নেই sudo

/ ************************************************* ********************** /

ত্রুটি-বিচ্যুতি:

এই ইস্যুটির সেরা সমাধানটি মন্তব্য করেছেন @ এমকাসবার্গ। আমি মন্তব্য উদ্ধৃতি:

That might work, you might run into issues down the road. Also, it's a security vulnerability. You'd be better off just adding yourself to the docker group, as the docs say. sudo groupadd docker, sudo usermod -aG docker $USER. Docs: https://docs.docker.com/install/linux/linux-postinstall/

অনেক ধন্যবাদ!


2
এটি কাজ করতে পারে, আপনি রাস্তায় সমস্যাগুলির মধ্যে চলে যেতে পারেন। এছাড়াও, এটি একটি সুরক্ষিত দুর্বলতা। dockerদস্তাবেজগুলি যেমন বলছে ঠিক তেমন নিজেকে গ্রুপে যুক্ত করা ভাল । sudo groupadd docker, sudo usermod -aG docker $USER
এমকাসবার্গ

আরে @ এমকাসবার্গ! আপনার মন্তব্যের জন্য ধন্যবাদ! আপনার সমাধানটি উদ্ধৃত করার জন্য আমি একটি ত্রুটি তৈরি করেছি। অনেক ধন্যবাদ!
কার্লোস আন্দ্রে

1

লগইডে পরিপূরক গোষ্ঠীগুলি পাস করার জন্য মনে হয় না এমন একটি বাগ সহ লাইটডিএম এবং কোয়াললেট জাহাজ। এটি সমাধান করার জন্য, আমাকেও পাশাপাশি ছিলাম sudo usermod -aG docker $USERhad

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

প্রতি

#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so

মধ্যে /etc/pam.d/lightdm পুনরায় বুট করার পূর্বে আসলে করার Docker-গ্রুপ জন্য, প্রভাব আছে।

বাগ: https://bugs.launchpad.net/lightdm/+bug/1781418 এবং এখানে: https://bugzilla.redhat.com/show_bug.cgi?id=1581495



1

গুরুতরভাবে বলছি। আপনার গ্রুপগুলিতে ডকার যুক্ত করবেন না বা সকেট পিক্সিক সংশোধন করুন (কঠোর SELinux ছাড়াই), এটি রুট প্রাইভেস্ক করার সহজ উপায়। আপনার .bashrc এ কেবল একটি নাম যুক্ত করুন, এটি সহজ এবং নিরাপদ হিসাবে: ওরফে ডিসি = 'সুডো ডকার'।


1

আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন এবং এটি আপনার পক্ষে কাজ করবে:

  1. একটি ডকার গ্রুপ তৈরি করুন sudo groupadd docker
  2. আপনার ব্যবহারকারীকে এই গোষ্ঠীতে যুক্ত করুন sudo usermod -aG docker $USER
  3. এই কমান্ডটি চালিয়ে ডকার গ্রুপটি সফলভাবে তৈরি করেছে তা নিশ্চিত করার জন্য গ্রুপগুলি তালিকাভুক্ত করুন groups
  4. ডকার গ্রুপের জন্য সেশন পরিবর্তন করতে নিম্নলিখিত কমান্ডটি চালান newgrp docker
  5. ফাইল ডকার.সোকের জন্য গ্রুপের মালিকানা পরিবর্তন করুনsudo chown root:docker /var/run/docker.sock
  6. .ডোকার ডিরেক্টরিটির জন্য মালিকানা পরিবর্তন করুন sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
  7. পরিশেষে sudo chmod g+rwx "$HOME/.docker" -R

এই পরীক্ষার পরে আপনি চালাতে পারেন docker ps -a


আমি একটি উত্তর চাইছিলাম যার পুনরায় বুট করার দরকার নেই। এটিই ছিল কেবল উত্তর provided "কৌশল" chownডকার.সক ফাইলের কাছে।
পুথেরকা

1

আপনি ডকার ইনস্টল করার পরে, 'ডকার' গ্রুপ তৈরি এবং এতে ব্যবহারকারী যুক্ত করার পরে, ডকার পরিষেবা ইউনিট ফাইল সম্পাদনা করুন:

sudo nano /usr/lib/systemd/system/docker.service

[পরিষেবা] বিভাগে দুটি লাইন যুক্ত করুন:

SupplementaryGroups=docker    
ExecStartPost=/bin/chmod 666 /var/run/docker.sock

ফাইলটি সংরক্ষণ করুন (Ctrl-X, y, enter)

ডকার পরিষেবা চালান এবং সক্ষম করুন:

sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker

0

Centos এ ডকার ইনস্টলেশন পরে। কমান্ডের নীচে চলার সময় আমি ত্রুটিটি পেয়েছি।

[centos@aiops-dev-cassandra3 ~]$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.soc k/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

গ্রুপ এবং ডকার.সকেটের জন্য অনুমতি পরিবর্তন করুন

[centos@aiops-dev-cassandra3 ~]$ ls -l /lib/systemd/system/docker.socket
-rw-r--r--. 1 root root 197 Nov 13 07:25 /lib/systemd/system/docker.socket
[centos@aiops-dev-cassandra3 ~]$ sudo chgrp docker /lib/systemd/system/docker.socket
[centos@aiops-dev-cassandra3 ~]$ sudo chmod 666 /var/run/docker.sock
[centos@aiops-dev-cassandra3 ~]$ ls -lrth /var/run/docker.sock
srw-rw-rw-. 1 root docker 0 Nov 20 11:59 /var/run/docker.sock
[centos@aiops-dev-cassandra3 ~]$

নীচে ডকার কমান্ড ব্যবহার করে যাচাই করুন

[centos@aiops-dev-cassandra3 ~]$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

[centos@aiops-dev-cassandra3 ~]$

-4

sudo chmod 666 /var/run/docker.sock

এটি আমাকে সাহায্য করেছিল যখন আমি ডকারে লগ ইন করতে এমনকি ত্রুটি পেয়েছি কিন্তু এখন এটি আমার সিস্টেমে সম্পূর্ণরূপে কাজ করে।


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