ডকার: ইতিমধ্যে তৈরি করা একটি ধারকটিতে পুনঃসূচনা নীতি যুক্ত করুন


229

আমি দেখতে পাচ্ছি যে ডকার কোনও উদাহরণস্বরূপ, পুনরায় বুট করার ক্ষেত্রে কনটেইনারগুলি পুনরায় আরম্ভ করার জন্য পুনরায় চালু করার নীতি বলে কিছু যুক্ত করেছে।

যদিও এটি খুব দরকারী, আমি দেখতে পাচ্ছি যে পুনঃসূচনা পলিসি কমান্ডটি কেবল সাথে কাজ করে docker runএবং না docker start। সুতরাং আমার প্রশ্নটি হ'ল:

ইতিমধ্যে অতীতে তৈরি করা পাত্রে পুনরায় চালু করার নীতিগুলি যুক্ত করার কোনও উপায় আছে কি?


আপনার কাছে @ ইয়েল হুয়াংয়ের একটিতে গৃহীত উত্তরটি পরিবর্তন করা উচিত। গৃহীত উত্তরটি ডকারের বর্তমান সংস্করণগুলির সাথে ভুল। আমি বুঝতে পারি উত্তরটি তখন আপনাকে ফিরে আসতে সহায়তা করেছিল তবে এখন এটি বিভ্রান্তিকর।
স্টেপান ভাভরা

2
সম্পন্ন. সতর্কবার্তা জন্য আপনাকে ধন্যবাদ।
এনরিক মোরেনো তাঁবু

উত্তর:


574

ডকারের সাম্প্রতিক সংস্করণগুলিতে (1.11 হিসাবে) আপনার একটি updateআদেশ রয়েছে:

docker update --restart=always <container>

9
দেখে মনে হচ্ছে এটি ডকার 1.11.0 এ যুক্ত হয়েছিল।
ফানসেন

@ হাফেনসেন: আসলেই ছিল
TachyonVortex

4
এটি ডকার 1.11 হিসাবে কাজ করে এমন সতর্কতার সাথে স্বীকৃত উত্তর হওয়া উচিত।
জনডো

6
docker update --restart always <container> ডকারের সাথে ১.0.০৯
আমাকে

4
docker updateএকাধিক ধারক আইডি গ্রহণ করে, তাই কোনও প্রয়োজন নেই xargs, শুধু করুন docker update --restart=always $(docker ps -q)
মার্কাস্ক

49

রিস্টার্টপলিসি সংশোধন করার জন্য দুটি পদ্ধতি রয়েছে:

  • ধারক আইডিটি সন্ধান করুন, পুরো ডকার পরিষেবা বন্ধ করুন, /var/lib/docker/containers/CONTAINER_ID/hostconfig.json পরিবর্তন করুন, পুনরায় চালু করুন -> "সর্বদা" নাম দিন, এবং ডকার পরিষেবা শুরু করুন।
  • docker commit আপনার ধারকটি একটি নতুন চিত্র হিসাবে, বর্তমান ধারকটিকে থামান এবং আরএম করুন এবং চিত্রটি দিয়ে একটি নতুন ধারক শুরু করুন।

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

2
অবশেষে, একটি যুক্তিসঙ্গত উত্তর :)
নবীন

আমার সাথে ডকারের সাথে একটি পুরানো সার্ভারে কাজ করেছেন 1.10 (জিজ্ঞাসা করবেন না)। দুঃখের সাথে docker updateকেবল পুনরায় সূচনা নীতিটি কেবলমাত্র 1.11+ এ পরিবর্তন করার অনুমতি দেয়
ইগর কুপসিস্কি

1

--restart=alwaysনীতি ব্যবহার করা পুনরায় বুটের ক্ষেত্রে বিদ্যমান পাত্রে পুনরায় চালু হ্যান্ডেল করবে।

সমস্যাটি হ'ল যদি ডকারে আলোচিত হিসাবে আপনি যখন নতুন সংস্করণটির চিত্র পরিচালনা করেন তখন একাধিক পাত্রে থাকে - তবে আপনি কীভাবে--restart=always কোনও ধারকটিতে অটো-পুনঃসূচনা অক্ষম করবেন?

কন্টেনারটি পুট বিকল্পের মাধ্যমে উপস্থিত থাকার পরে স্বয়ংক্রিয়ভাবে অপসারণের চেষ্টা করা নীতিতেও docker run --rmসমস্যা হবে --restart=always কারণ তারা একে অপরের বিরোধ করছে

$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm

সুতরাং এই ক্ষেত্রে অন্য বিকল্পটি বেছে নেওয়া আরও ভাল: - বন্ধ না হওয়া পলিসি না করে পুনরায় শুরু করুন।

$ docker run --rm --restart unless-stopped <image>

এই নীতিটি বিরোধী নয়docker run --rm তবে ডকার ডকুমেন্টেশনে বর্ণিত হিসাবে :

এটির মতোই --restart=always, কনটেইনারটি বন্ধ হয়ে গেলে (ম্যানুয়ালি বা অন্যথায়) ডকার ডিমন পুনরায় চালু হওয়ার পরেও এটি পুনরায় আরম্ভ করা হয় না।

সুতরাং এই --restart unless-stoppedনীতিটি ব্যবহার করার সময়, আপনি যখন টার্মিনালটি বন্ধ করে দিচ্ছেন দুর্ঘটনাক্রমে এটি বন্ধ হয়ে যায় সেই ক্ষেত্রে পুনরায় চালু করার বিষয়টি নিশ্চিত করার জন্য, নীচের মতো অন্য টার্মিনালে একবার করুন :

$ docker ps
$ docker restart <container>

পূর্বের শেলের মধ্যে হত্যার প্রক্রিয়া শেষ না হওয়া পর্যন্ত অপেক্ষা করুন, তারপরে এটি বন্ধ করুন এবং কেবল ছাড়ুন ( প্রস্থান করবেন না )।
এবং ধারকটি এখনও চালু থাকলে অবশেষ টার্মিনালে আবার পরীক্ষা করুন:

$ docker ps

যদি এটি এখনও চলমান থাকে তবে আপনি নিরাপদে পুনরায় বুট করতে পারেন এবং অ্যাপ্লিকেশনটি আবার চালু হচ্ছে কিনা তা আবার পরীক্ষা করতে পারেন এবং দেখতে পাবেন যে আপনার ডকার একাধিক পাত্রে ব্যবহার না করেই পরিষ্কার।

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