ডিমন চলমান অবস্থায় কেন আমি "ডকার ডেমনের সাথে সংযোগ স্থাপন করতে পারি না"?


29

ডকার পরিষেবা পরিষ্কারভাবে চলছে:

$ systemctl status docker.service 
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2015-12-28 19:20:50 GMT; 3 days ago
     Docs: https://docs.docker.com
 Main PID: 1015 (docker)
   CGroup: /system.slice/docker.service
           └─1015 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
$ ps wuf -u root | grep $(which docker)
root      1015  0.0  0.3 477048 12432 ?        Ssl   2015   2:26 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs

তবে ডকার নিজেই এর সাথে কথা বলতে অস্বীকার করেছেন:

$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

আমি ডিফল্ট ডকার কনফিগারেশন চালাচ্ছি , অর্থাৎ, আমি /etcএই পরিষেবাদি সম্পর্কিত কোনও ফাইল পরিবর্তন করি নি ।

এখানে সমস্যা কি হতে পারে?

উত্তর:


36

আপনাকে করার প্রয়োজন নিজেকে যোগ dockerগ্রুপ এবং গ্রুপ সক্রিয় (লগ আউট করুন এবং আবার বা চালিয়ে newgrp dockerচালানোর জন্য) dockerকমান্ড। ত্রুটি বার্তাটি কেবল বিভ্রান্তিকর।


1
সত্যিই বিভ্রান্তিকর নয়। এটি ডকার ডেমনের সাথে সংযোগ করতে পারেনি । "কি দমন চলছে?" শুধু অনুমান ছিল।
ব্র্যাচলে

2

1
sudo gpasswd -a $ USER ডকার # কোনও ব্যবহারকারীর জন্য কাজ করে
priomsrb

আমি এটি করেছি এবং এটি এখনও কার্যকর হয়নি। চলমান sudo systemctl start dockerএটি সংশোধন করা হয়েছে, ডেমন সত্যিই চলমান না হয় ...
nakamin

32

এই প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে, তবে এখানে তথ্যের একটি অতিরিক্ত অংশ রয়েছে।

আপনি আর্কে বা ফেডোরা বা উবুন্টুর মতো অন্য বিতরণে থাকুন না কেন, ডকার যোগাযোগের জন্য সকেট ফাইল ব্যবহার করেন। আপনি যখন 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))


1
এটি আসল প্রশ্নের উত্তর বলে মনে হচ্ছে না।
l0b0

4
@ l0b0: ভাল, আমি কেন এটি হচ্ছে তা ব্যাখ্যা করতে চেয়েছিলাম, আশা করি এটি কারও পক্ষে কার্যকর হবে। ব্যবহারকারীকে এই গোষ্ঠীতে যোগ করার জন্য যে ইউজারমড কমান্ডটি উত্তরটির মাঝের অংশে লুকিয়ে রয়েছে। যদি আপনি এই উত্তরটি দরকারী না পান তবে আমাকে জানান যাতে আমি এটি মুছতে পারি।
বেসিক 6

4
হ্যাঁ, এটি উত্তর দেয় এবং আর্কের সমাধান ব্যাখ্যা করে।
কোডেয়ার্ট

আমি এই সবগুলি করেছি এবং এখনও আমি ওপি দ্বারা উল্লিখিত সমস্যাটির মুখোমুখি হয়েছি। অনুমতি সম্পর্কিত কোনও পদক্ষেপই সমস্যার সমাধান করেনি।
মোপসিড

3

sudo ব্যবহারকারীর -aG ডকার [ব্যবহারকারীর নাম]

তারপরে লগআউট করুন এবং আবার লগ ইন করুন


1

আমার লিনাক্স সিস্টেমে এই সমস্যা সমাধানের জন্য কিছু গবেষণা করার পরে আমি ভেবেছিলাম এই উত্তরটি লিখব। সমস্যাটি সমাধান করার জন্য আমি এখানে যা করেছি।

ফেডোরায় 22

ডকার ইনস্টল করা:

$> curl -fsSL https://get.docker.com/ | sh

ডকার ইনস্টল করার পরে:

একজন ব্যবহারকারীকে ডকার গ্রুপে যুক্ত করা দরকার।

$> sudo usermod -aG docker

ডকার ডেমনটি শুরু করা দরকার

$> sudo service docker start

বুট শুরু করতে আপনি ডিমন সেট করতে পারেন

$> sudo chkconfig docker on

আপনি যাচাই করতে পারেন ডকার পরিষেবাটি চলছে

$> service docker status

এবং একটি শেষ চূড়ান্ত চেক

$> docker run hello-world

সম্পূর্ণ উদাহরণের জন্য +1, যদিও এই কমান্ডগুলির অনেকগুলি আমার পরিস্থিতির ক্ষেত্রে প্রযোজ্য নয় ( + এর পরিবর্তে pacmanব্যবহার করে ইনস্টল করা )। systemctlservicechkconfig
l0b0

1

আপনি যদি ফেডোরা 23 ব্যবহার করেন বা রেডহ্যাট বৈকল্পিক সম্পাদনা /etc/sysconfig/dockerএবং নিম্নলিখিতটি সংশোধন করছেন

OPTIONS='--selinux-enabled --log-driver=journald -G yourdockergroup'

ডকার পুনরায় চালু করুন।

আপনি এই গ্রুপটিকে সিস্টেমে যুক্ত করেছেন এবং নিজেকে গ্রুপে যুক্ত করেছেন তা নিশ্চিত করুন।


1

এই আদেশগুলি আমার পক্ষে কাজ করে

sudo grep dwalsh /etc/sudoers

alias docker="sudo /usr/bin/docker"

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


1

আপনি যদি আপনার ডকার ইঞ্জিনটি দিয়ে শুরু করেন: সুডো পরিষেবা ডকার শুরু

আপনি নিজেকে 'ডকার' গ্রুপে যুক্ত করলেও আপনি সাধারণ ব্যবহারকারীর সাথে সংযোগ করতে পারবেন না।

আপনি কেবল এটিকে দিয়ে থামাতে পারেন: সুডো পরিষেবা ডকার স্টপ

এবং এটি একটি সাধারণ ব্যবহারকারী হিসাবে শুরু করুন: পরিষেবা ডকার শুরু


আমাকে docker groupএখন পর্যন্ত ব্যবহারকারীর যোগ করতে হয়নি । sudo service startআমার জন্য কাজ। যাই হোক, নতুন কিছু আছে কিনা তা পর্যবেক্ষণ করবে।
stupidnetizen

0

আমারও একই সমস্যা ছিল। সমস্যাটি ছিল ডকার-ডেমন এবং ডকার-ক্লায়েন্টকে বরাদ্দ করা সকেটে।

  1. প্রথমত, ডকার-ক্লায়েন্টের জন্য ডকারে অনুমতি সেট করা হয়নি .সক আপনি এটি ব্যবহার করে সেট করতে পারেন sudo usermod -aG docker $USER

  2. তারপরে আপনার বাশ ফাইলটি পরীক্ষা করুন যেখানে ডকার-ক্লায়েন্ট চলছে। আমার জন্য এটি 0.0.0.0:2375 এ সেট করা হয়েছিল, যখন ডকার-ডিমন ইউনিক্স সকেটে চলছে। (এটি ডকারডের কনফিগারেশন ফাইলে সেট করা হয়েছিল)।

  3. আপত্তিজনক লাইনটি সম্পর্কে মন্তব্য করুন এবং এটি কার্যকর হবে।

  4. তবে আপনি যদি এটি ইউনিক্স সকেটের পরিবর্তে টিসিপি পোর্টে কাজ করতে চান, তবে ডকার্ডের কনফিগারেশন ফাইলটি পরিবর্তন করুন, এটি 0.0.0.0.2375 তে সেট করুন এবং ল্যাশটিকে যেমন উপস্থিত থাকে বা এটি 0.0 তে সেট করে রাখুন। 0.0: 2375।


0

নিম্নলিখিতগুলি ঠিক করতে আমি এই পদক্ষেপগুলি অনুসরণ করেছি

$ docker info
Cannot connect to the Docker daemon at 
tcp://localhost:2375/usr/lib/systemd/system/docker.socket. Is the docker daemon running?
  1. আপনার স্বকে ডকার গ্রুপে যুক্ত করুন

    usermod -aG docker $USER

  2. ডকার সোকার এবং কমান্ডের অনুমতিগুলি ঠিক করুন।

    sudo chgrp docker /usr/bin/docker
    sudo chgrp docker /var/run/docker.sock

    $ ll $(which docker) -rwxr-xr-x 1 root docker 18991768 08.07.2017 22:57 /usr/bin/docker*

    $ ll /var/run/docker.sock srw-rw---- 1 root docker 0 23.07.2017 10:21 /var/run/docker.sock

  3. ডকার কমান্ডের জন্য কনফিগারেশন এনভায়রনমেন্টে ভেরিয়েবল যুক্ত করুন

    export DOCKER_HOST=unix:///var/run/docker.sock

  4. রেস্ট ডকার

    sudo systemctl restart docker

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