`ডকার স্টপ` এবং` ডকার কিলের মধ্যে পার্থক্য কী?


116

মধ্যে পার্থক্য কি docker stopএবং docker kill?

আফাইক, দুজনই একটি চলমান ধারক বন্ধ করবে। এটি কি docker stopএই সঠিক পদ্ধতিতে ধারকটির অভ্যন্তরে প্রক্রিয়াটি থামানোর চেষ্টা করে, যখন docker killএকটি কিল সংকেত প্রেরণ করবে? যদি তা হয় কিভাবে docker stopচলমান প্রক্রিয়াটি সঠিকভাবে বন্ধ করতে হয় তা কীভাবে জানবেন। (যেহেতু এটি প্রক্রিয়া থেকে প্রক্রিয়াতে আলাদা হয়)

উত্তর:


112

ডকার কিল একটি কিল সিগন্যাল প্রেরণ করবে, এমন কি ডকারের মাধ্যমে সঠিকভাবে কনটেইনারটির ভিতরে থাকা প্রক্রিয়াটি থামানোর প্রচেষ্টা বন্ধ করা হচ্ছে?

হ্যাঁ, পার্থক্যটি সূক্ষ্ম তবে কমান্ড লাইন রেফারেন্সে বর্ণিত :

  • ডকার স্টপ : একটি চলমান ধারক বন্ধ করুন ( গ্রেট পিরিয়ডের পরে সিগন্টার প্রেরণ করুন, এবং তারপরে সিগ্কিল করুন ) [...] ধারকটির অভ্যন্তরীণ মূল প্রক্রিয়াটি SIGTERM গ্রহণ করবে এবং গ্রেস পিরিয়ডের পরে সিগ্কিল করবে। [জোর আমার]
  • ডকার কিল : একটি চলমান ধারককে হত্যা করুন ( সিগ্কিল, বা নির্দিষ্ট সংকেত প্রেরণ করুন ) [...] ধারকটির অভ্যন্তরের প্রধান প্রক্রিয়াটি সিগ্কিল, অথবা বিকল্প - সিগন্যাল সহ নির্দিষ্ট কোনও সংকেত প্রেরণ করা হবে। [জোর আমার]

সুতরাং stopস্ট্যান্ডার্ড POSIX সিগন্যাল প্রেরণ করে একটি চমত্কার শাটডাউন ট্রিগার করার চেষ্টা করে SIGTERM, যেখানে killকেবলমাত্র প্রক্রিয়াটি ডিফল্টরূপে হত্যা করে (তবে অন্য কোনও সংকেত প্রেরণেও অনুমতি দেয়):

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

যাইহোক যাইহোক প্রয়োগ করা হয়নি, প্রক্রিয়াগুলি সাধারণত SIGTERMনিখুঁতভাবে পরিচালনা করবে এবং তাদের দায়িত্বের উপর নির্ভর করে সঠিক কাজ করবে বলে আশা করা হয় - গ্রেস পিরিয়ডের চেয়ে বেশি সময় নেওয়ার এই গ্রেটফুল শাটডাউন প্রয়াসের কারণে এটি সহজেই ব্যর্থ হতে পারে, যা ডেটা অখণ্ডতা বিবেচনা করার মতো কিছু প্যারামাউন্ট (যেমন ডাটাবেসের জন্য); আরও বিশদ বিবরণের জন্য উদাহরণস্বরূপ মেজর হেডেনের সিগমেন্টার বনাম সিগকল

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


1
সুতরাং আমি যদি ধারকগুলির জন্য জেনেরিক শাটডাউন পদ্ধতিটি রাখতে চাই, তবে আমাকে সুপারভাইজার / রানিট প্রসেসে সিআইজিটারএম ধরতে হবে?
সিএমসিডিগ্রাগনকাই

এখানে সেরা অনুশীলন কি? আমি বুঝতে পারছি কেন আমরা docker killশাটডাউনের সময় কিছুটা সময় বাঁচাতে হাতের সাহায্যে ব্যবহার করব , তবে কোনও স্ক্রিপ্টে, এর মাধ্যমে ক্রিস্টাল শাটডাউন করার চেষ্টা করা কি সবসময় ভাল না docker stop? আমি এখনও docker killস্ক্রিপ্টে প্রচুর গুলি দেখতে পাচ্ছি ।
ডেনিস

10

docker kill হঠাৎ করেই মূল প্রবেশপথ প্রক্রিয়া / প্রোগ্রাম বন্ধ করবে

docker stop এটি নিখুঁতভাবে বন্ধ করার চেষ্টা করবে (বিনীতভাবে জিজ্ঞাসা করবে: পি)

উভয় ক্ষেত্রেই ফাইল সিস্টেমের পরিবর্তনগুলি বজায় থাকবে (থামাতে বা হত্যা করার সময়) সুতরাং আপনি যদি docker start <container>তা সেখান থেকে চালিয়ে যান।


1
... তবে docker killকোনও মুলতুবি থাকা ফাইল সিস্টেমের ক্ষেত্রে মেমরির মূল প্রক্রিয়াটি এখনও হারিয়ে যাবে, তাই ফাইল সিস্টেমটি ক্ষতিগ্রস্থ হয়ে যেতে পারে?
আরজান

স্পষ্টতই, যেহেতু হঠাৎ স্টপ, হত্যার সময় কেবল পরিবর্তনগুলিই বহাল থাকবে। কিছু মুলতুবি হারিয়ে যাবে। আমার বক্তব্যটি হ'ল ডকার কিল আসলেই নয় ... ধারকটিকে হত্যা করা, প্রক্রিয়াটি বন্ধ করে দেওয়া। যেমন আপনি যখন কম্পিউটারটি বন্ধ করার পরিবর্তে বিদ্যুৎ বন্ধ করেন
অবাক করা

2
ডকারের ধারকগুলি ভিএম নয় এবং কার্নেল একটি কিলের মাধ্যমে জীবিত থাকে। অতএব, কার্নেলে পৌঁছেছে এমন কোনও ফাইল-সিস্টেম পরিবর্তন অক্ষত থাকবে। ফাইল সিস্টেমের ক্ষতি করা সম্ভব হবে না (fsck অর্থে; অ্যাপ্লিকেশনটি এর কিছু লেখক হারানো পছন্দ করতে পারে না)। কম্পিউটারটি বন্ধ নাdocker kill করে একটি প্রক্রিয়া হত্যার অনুরূপ ।
আয়ান হাউসন

3

এবং আগে যুক্ত করা উত্তরগুলি যোগ করুন

অনুষ্ঠানের docker eventsপরে চলছেdocker stop

  • কিল (সিগন্যাল 15): যেখানে সংকেত 15 = SIGTERM
  • মরা
  • বন্ধ করা

অনুষ্ঠানের docker eventsপরে চলছেdocker kill

  • কিল (সিগন্যাল 9): যেখানে সিগন্যাল 9 = সিগন্যাল
  • ডাই (প্রস্থান কোড 137)

docker stopপ্রক্রিয়া হত্যার আগে একটি সময়সীমা আছে। ডিফল্টটি 10 ​​সেকেন্ডের।

এই টেবিলটিতে আরও বিশদ রয়েছে।


1

এটা তোলে অনুরূপ ডেস্কটপ বন্ধ প্লাগ টানা এবং কম্পিউটার বন্ধ করা

প্লাগ অফ টানার অর্থ হার্ড পাওয়ার বন্ধ, docker killমানে মাই_কন্টেইনারকে মেরে ফেলার সরাসরি উপায়, যা প্রথমে নিখুঁতভাবে প্রক্রিয়াটি বন্ধ করার চেষ্টা করে না।

কম্পিউটার বন্ধ করে দেওয়ার অর্থ সমস্ত প্রক্রিয়া বন্ধ করার জন্য ওএসকে সংকেত docker stopপাঠানো যেখানে SIGTERMপ্রক্রিয়াগুলি নিখুঁতভাবে বন্ধ করতে চলমান ধারকটিতে সংকেত প্রেরণ ।

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