Docker: що це таке, навіщо потрібен і чим відрізняється від віртуалізації
1. Що таке Docker
Docker - це платформа контейнеризації, розроблена компанією Docker Inc., яка дозволяє упаковувати застосунок разом із залежностями в ізольоване середовище виконання - контейнер.
Контейнер - це легковагова ізольована одиниця виконання, яка:
-
використовує ядро операційної системи хоста;
-
має власну файлову систему;
-
ізольована на рівні процесів і мережі;
-
запускається за секунди.
Основна ідея: застосунок працює однаково в будь-якому середовищі.
2. Для чого потрібен Docker
2.1 Усунення проблеми середовищ
Docker вирішує класичну проблему:
“Працює на моєму комп’ютері, але не працює на сервері”.
Контейнер містить:
-
конкретну версію runtime (PHP, Node.js, Python);
-
системні бібліотеки;
-
залежності;
-
конфігурацію.
Це гарантує однакову поведінку в dev, test і production.
2.2 Спрощення розгортання
Замість ручного налаштування:
-
веб-сервера,
-
бази даних,
-
системних пакетів,
достатньо виконати:
2.3 Ізоляція сервісів
Кожен сервіс може працювати:
-
в окремому контейнері;
-
з власною версією runtime;
-
без конфлікту залежностей.
Це критично важливо для мікросервісної архітектури.
2.4 Автоматизація та CI/CD
Docker активно використовується в CI/CD пайплайнах:
-
GitHub Actions
-
GitLab CI
-
Jenkins
Контейнери дозволяють запускати тести в стандартизованому середовищі.
3. Docker vs Віртуалізація
3.1 Віртуальна машина (VM)
Приклад гіпервізора: VMware ESXi
Архітектура VM:
Особливості:
-
кожна VM має повноцінну ОС;
-
споживає значні ресурси;
-
довший час запуску;
-
вищий рівень ізоляції.
3.2 Контейнеризація (Docker)
Архітектура Docker:
Особливості:
-
використовується спільне ядро ОС;
-
мінімальні накладні витрати;
-
запуск за секунди;
-
висока щільність розміщення сервісів.
3.3 Порівняльна таблиця
Параметр | VM | Docker | ||
|---|---|---|---|---|
| Гостьова ОС | Повноцінна | Відсутня | ||
| Ресурси | Високі | Низькі | ||
| Хвилини | Секунди | ||
| Ізоляція | Повна | На рівні процесів | ||
| Масштабування | Повільніше | Швидке |
4. Основні поняття Docker
4.1 Image (образ)
Образ - це шаблон (read-only), на основі якого створюються контейнери.
Приклад:
4.2 Container (контейнер)
Запущений екземпляр образу.
4.3 Dockerfile
Текстовий файл з інструкціями для створення образу.
Приклад:
4.4 Docker Registry
Сховище образів. Найпопулярніше - Docker Hub.
5. Базові команди Docker
Перевірка версії
Завантаження образу
Запуск контейнера
Запуск у фоновому режимі з пробросом порту:
Список контейнерів
Активні:
Усі:
Зупинка контейнера
Видалення контейнера
Видалення образу
Виконання команди всередині контейнера
6. Docker Compose
Docker Compose - інструмент для керування багатоконтейнерними застосунками через YAML-конфігурацію.
Приклад docker-compose.yml:
Запуск:
7. Типовий робочий процес
-
Створення Dockerfile
-
Збірка образу:
-
Запуск контейнера:
-
Деплой на сервер або оркестрацію (наприклад, Kubernetes)
8. Переваги Docker
-
Портативність
-
Ізоляція
-
Швидкий запуск
-
Спрощене масштабування
-
Стандартизація середовища
9. Обмеження
-
Менший рівень ізоляції порівняно з VM
-
Залежність від ядра ОС
-
Потребує розуміння мереж та сховищ