Це те, що докер зупиняє спроби зупинити процес запуску всередині контейнера правильним чином, в той час як docker kill буде надсилати сигнал вбивства?
В основному так, різниця є тонкою, але окресленою у посиланні на командний рядок :
- зупинка докера : зупиніть запущений контейнер ( надішліть SIGTERM, а потім SIGKILL після пільгового періоду ) [...] Основний процес всередині контейнера отримає SIGTERM, а після пільгового періоду - SIGKILL. [акцент мій]
- docker kill : вбити запущений контейнер ( надіслати SIGKILL або вказаний сигнал ) [...] Основний процес всередині контейнера буде надісланий SIGKILL, або будь-який сигнал, вказаний з опцією --signal. [акцент мій]
Таким чином, stop
намагається викликати витончене відключення, надсилаючи стандартний сигнал POSIX SIGTERM
, тоді як kill
просто вбиває процес за замовчуванням (але також дозволяє надсилати будь-який інший сигнал):
Сигнал SIGTERM надсилається процесу з вимогою його припинення. На відміну від сигналу SIGKILL, його можна вловлювати та інтерпретувати або ігнорувати в процесі. Це дозволяє процесу виконувати гарне припинення, вивільняючи ресурси та зберігаючи стан, якщо це доречно. Слід зазначити, що SIGINT майже ідентичний SIGTERM.
Хоча в будь-якому разі не застосовується, процеси, як правило, SIGTERM
граціозно поводяться та роблять правильно, залежно від їхніх обов'язків - це може легко закінчитися через витончену спробу вимкнення, яка займає більше часу, ніж пільговий період, але це щось, що слід враховувати, якщо цілісність даних є першочерговий (наприклад, для баз даних); див., наприклад, SIGTERM майора Хайдена проти SIGKILL для більш детального пояснення:
Додаток може визначити, що він хоче робити, коли буде отримано SIGTERM. У той час як більшість програм очищають свої ресурси та зупиняються, деякі можуть не робити. Програма може бути налаштована на те, щоб зробити щось зовсім інше, коли отримано SIGTERM. Крім того, якщо програма знаходиться в поганому стані, наприклад, очікування дискового вводу / виводу, воно може не мати можливості діяти на надісланий сигнал.