← До фільтрів та технологій

← До списку лабораторних по Docker

Docker Лабораторна 64: Graceful shutdown

Технологія: Docker

Номер лабораторної: 64 · Рівень: middle

Тема: Коректне завершення контейнерів і SIGTERM

Повний опис / сценарій лабораторної:

Мета: навчитися забезпечувати коректне завершення застосунку при docker stop.



Крок 1. Написати простий застосунок який ловить сигнали.

Пояснення: наприклад скрипт на Python або Shell який логуватиме отриманий сигнал.



Крок 2. Створити Dockerfile для цього застосунку.

Пояснення: важливо щоб основний процес був pid 1.



Крок 3. Запустити контейнер у фоні.

Команда: docker run -d --name lab64 app-image



Крок 4. Подивитися стандартний таймаут docker stop.

Пояснення: за замовчуванням приблизно 10 секунд до надсилання SIGKILL.



Крок 5. Зупинити контейнер і дивитися логи.

Команда: docker stop lab64; docker logs lab64

Пояснення: переконайся що процес побачив SIGTERM і коректно завершився.



Крок 6. Знову запустити контейнер з іншим таймаутом.

Команда: docker run -d --name lab64b --stop-timeout=3 app-image

Пояснення: тепер у застосунку менше часу на завершення.



Крок 7. Змоделювати довге завершення.

Пояснення: додай у код штучну затримку перед виходом.



Крок 8. Перевірити що при занадто довгому завершенні Docker надішле SIGKILL.

Пояснення: подивися логи і час зупинки.



Крок 9. Задокументувати вимоги до graceful shutdown для свого сервісу.

Пояснення: скільки часу потрібно щоб завершити активні запити і зберегти стан.



Крок 10. Міні звіт.

Завдання: опиши як некоректне завершення контейнера може вплинути на черги задач або транзакції.