ডোকর ডিমন কোরিস-এ বুট শুরু করে না


23

আমার কাছে কোরিওএস (835.9.0) এর একটি ভ্যানিলা ইনস্টল রয়েছে এবং এটি স্টার্টআপে ডকার ডেমন শুরু করে না। এটি কেবল তখনই শুরু হয় যখন আমি এসএসএইচ করি এবং উদাহরণস্বরূপ করি docker ps

আমি কীভাবে ডকার ডেমন স্বয়ংক্রিয়ভাবে সিস্টেম বুটে চালু করতে পারি?

আমি যখন ডকার ডেমন বলি, তার মানে ps -ef | grep dockerআমি না করা পর্যন্ত কোনও প্রক্রিয়া দেখায় নাdocker ps

উত্তর:


40

sudo systemctl enable docker কৌতুকটি করেছে


2
ধন্যবাদ, এবং আমি ডকার ডকগুলি পড়েছি এবং সাহায্যের জন্য কিছুই খুঁজে পেলাম না - পুনরায় চালু করার নীতিগুলি সম্পর্কে আমি অনেক কিছু পেয়েছি, তবে অবশ্যই ডকার ডিমন শুরু হওয়ার পরে তারা কেবলমাত্র প্রয়োগ করে।
ক্রিস

6
পটভূমি: এর মূলে হ'ল ডকারটি কোরিওএস-তে সকেট সক্রিয়, অর্থাৎ এটি বুট চেইনটিকে অবরুদ্ধ করে না। আপনার যখন ডিস্কে প্রচুর পরিমাণে ধারক ছিল যা ডকের উপর নির্ভর করে যা দ্রুত শুরু করা থেকে নিরস্ত করে তোলে, যা কিছু আকর্ষণীয় ব্যর্থতার কারণে ডকারের প্রাথমিক সংস্করণগুলি ধীরে ধীরে শুরু হয়েছিল।
রব

4
ধার্মিকতা। এটি আমাকে পাগল করে দিয়েছে। আমি কোনও ডক্সে যা পড়েছি তা কিছুই উল্লেখ করেনি। আমি প্রায় CoreOS এর কারণে এডাব্লুএস এএমআই এর পক্ষে শপথ করেছিলাম। (এডাব্লুএস এএমআই স্বয়ংক্রিয়ভাবে ডকার ডিমনটি ডিফল্টরূপে শুরু করে)।
নস্টালজি.ইও

2
কোরিওএসের পক্ষে এইভাবে আচরণ করা খুব অস্বাভাবিক, প্রদত্ত যে কোরিওএস একটি ডেডিকেটেড ডকার ওএস এবং এটি বুটের সময় ডকার শুরু করছে না ???
typelogic

3
এটি গুরুতরভাবে গুরুত্বপূর্ণ তথ্য। কোরিওএস ডক্সে ডকারকে সক্ষম করতে (বা সেই বিষয়ে কোনও অন্য ধারক রানটাইম) সক্ষম করার বিষয়ে কোনও উল্লেখ নেই। যেহেতু খালি CoreOS এ ডকার পাত্রে শুরু করা সম্ভব (এবং যেহেতু CoreOS কনটেইনারগুলি চালানোর জন্য তৈরি করা হয়েছে), তাই আমি এই ধারণাটির মধ্যে ছিলাম যেটি ডিফল্ট ছিল। আমি কেবল তখনই আমার ভুল বুঝতে পেরেছিলাম যখন প্রথম আপডেট-ট্রিগারযুক্ত রিবুট আমার পাত্রে শুরু হয় না।
ফ্লোরিয়ান ফন স্টোশ

6

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

#cloud-config
coreos:
  units:
    - name: "docker.service"
      command: "start"
      enable: true

এটি ডকার পরিষেবা সক্ষম করে এবং এটি প্রথম এবং প্রতিটি বুটে শুরু করবে।


2

ইতিমধ্যে ব্যাখ্যা হিসাবে এই মন্তব্যটি দ্বারা রব , Docker সকেট সক্রিয় হয়। এর অর্থ হ'ল ডায়মনটি শুরু না হয় যতক্ষণ না এটি ডাকা হয়। এখানে বিদ্যমান উত্তরগুলি কাজ করে তবে কোরিওএস একটি ভিন্ন পদ্ধতির প্রস্তাব দেয়।

কোরওস ডকুমেন্টেশন অনুসারে এটি করার প্রস্তাবিত উপায়টি হল আপনার নিজের অ্যাপের জন্য একটি পরিষেবা তৈরি করা যার পরিবর্তে ডকার পরিষেবা প্রয়োজন:

/etc/systemd/system/myapp.service:

[Unit]
Description=MyApp
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox1
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c "trap 'exit 0' INT TERM; while true; do echo Hello World; sleep 1; done"

[Install]
WantedBy=multi-user.target

এবং পরিবর্তে সেই পরিষেবাটি স্বয়ংক্রিয়ভাবে শুরু করুন:

$ sudo systemctl enable /etc/systemd/system/myapp.service
$ sudo systemctl start hello.service

ব্যবহারের ক্ষেত্রে উদাহরণটি হ'ল পরিষেবাটি একবার চালু হওয়ার পরে ধারকটিকে সর্বশেষ সংস্করণে আপডেট করা এবং উন্নত উদাহরণটি পরিষেবা ইত্যাদিতে নিবন্ধন করে। আরও পটভূমি তথ্যের জন্য CoreOS ডকুমেন্টেশন পড়ুন ।


এটি কোরিওসের "সর্বশেষ"? ডকারের বহু বছর ধরে পুনরায় চালু করার নীতি ছিল এবং এই পদ্ধতির আর প্রয়োজন বা প্রয়োজন হয় না। এটি কখনই পছন্দসই ছিল না, তবে ডকারের পাত্রে পুনরায় আরম্ভ করার জন্য ডকারের সমর্থনটির অভাব (এটির পুরানো সংস্করণগুলির) কাজ ছিল। কোরিওএস ব্যবহার বন্ধ করার দীর্ঘ সময়, আমার ধারণা ...
মাইকেল হ্যাম্পটন

@ মিশেলহ্যাম্পটন পুনঃসূচনা নীতিগুলি তখনও প্রয়োগ হয় যখন ধারকটি অন্য কোনও কারণে ক্র্যাশ হয়, সুতরাং একজনের জন্য অন্যটির প্রতিস্থাপন নয়। এছাড়াও, পুনঃসূচনা পলিসিগুলি আপনাকে বুট ইত্যাদিতে পাত্রে আপডেট করার অনুমতি দেয় না etc. আমার কাছে এর চেয়ে ভাল কোন ধারণা নেই তবে আমি মনে করি এই পদ্ধতিটি আপনাকে আরও কিছুটা নিয়ন্ত্রণ দেয়।
নেওগ্রাফ 734

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

1

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

এটি রাখুন /etc/systemd/system/poke-docker.service:

[Unit]
After=default.target

[Service]
Type=oneshot
ExecStart=/usr/bin/docker version
RemainAfterExit=yes

[Install]
WantedBy=default.target

এবং তারপরে এটি systemctl enable poke-dockerস্টার্টআপ ক্রমের শেষে, প্রতিটি বুটে ট্রিগার করতে সেট আপ করতে set docker versionকমান্ড Docker ডেমনের সাথে আলোচনা, সকেট triggering এবং Docker সেবা নিজেই শুরু।

আমি systemctl enable dockerঅন্য উত্তরে কৌতুকটি চেষ্টা করেছিলাম , এবং এটি প্রথমদিকে কাজ করার সময়, এটি মনে হয় যে কোনওরকম বজ্রপাতের ঝাঁকুনির পরিস্থিতি সৃষ্টি হয়েছে যেখানে ডকার দৃশ্যত পুরোটা করার চেষ্টা করছিল এবং খারাপভাবে ব্যর্থ হয়েছিল। আমি সন্দেহ করি এটি সেখানে মন্তব্যে উল্লিখিত "বুট চেইন ব্লক করা" আচরণ।


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