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

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

Docker Лабораторна 68: IO ліміти для контейнера

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

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

Тема: Обмеження дискового вводу виводу для контейнерів

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

Мета: зрозуміти як обмежувати IO контейнера щоб він не заважав іншим сервісам на хості.



Крок 1. Ознайомитися з параметрами blkio які підтримує Docker.

Пояснення: наприклад --device-read-bps, --device-write-bps, --device-read-iops.



Крок 2. Визначити блоковий пристрій який використовується для даних.

Команда: lsblk

Пояснення: зазвичай це щось на кшталт sda або vda.



Крок 3. Запустити контейнер без обмежень і створити у ньому інтенсивне IO.

Пояснення: використай dd або stress-ng щоб писати дані на диск.



Крок 4. Спостерігати за завантаженням диска.

Команда: iostat або atop на хості.



Крок 5. Зупинити контейнер і запустити його з обмеженням IO.

Команда: docker run -d --name io68 --device-write-bps /dev/sda:10mb busybox sh -c "while true; do dd if=/dev/zero of=/data/file bs=1M count=100; sleep 5; done"

Пояснення: заміни /dev/sda на свій пристрій.



Крок 6. Знову виміряти завантаження диска.

Пояснення: порівняй з попереднім експериментом.



Крок 7. Перевірити як обмеження впливають на час виконання задачі.

Пояснення: виміряй скільки секунд триває запис того самого обʼєму.



Крок 8. Обговорити чи доцільно задавати такі ліміти для прод баз даних.

Пояснення: надто жорсткі обмеження можуть погіршити продуктивність.



Крок 9. Сформулювати рекомендації щодо IO лімітів для допоміжних сервісів.

Пояснення: бекграундні завдання можуть мати суворіші обмеження.



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

Завдання: опиши підхід до вибору IO лімітів для різних типів контейнерів на спільному хості.