Docker: контейнеризація додатків
Docker пакує додаток з усіма залежностями у легкий контейнер, що однаково працює на будь-якій машині. Контейнер ізолює процес, але ділить ядро ОС з хостом -- на відміну від віртуальних машин, які запускають повну ОС. Docker Hub -- реєстр готових образів: Node.js, Python, PostgreSQL, Nginx. Dockerfile описує як побудувати образ. Docker Compose оркеструє кілька контейнерів для складних додатків.
| Команда | Дія |
|---|---|
| docker build -t name . | Побудувати образ з Dockerfile |
| docker run -p 3000:3000 name | Запустити контейнер з прокиданням порту |
| docker ps | Список запущених контейнерів |
| docker stop / rm | Зупинити / видалити контейнер |
| docker images | Список локальних образів |
| docker compose up -d | Запустити всі сервіси у фоні |
| docker exec -it container bash | Зайти всередину контейнера |
Dockerfile: FROM, COPY, RUN, CMD
Dockerfile -- інструкція для побудови образу. FROM визначає базовий образ (node:20-alpine). WORKDIR встановлює робочу директорію. COPY переносить файли з хоста в контейнер. RUN виконує команди при побудові (npm install). EXPOSE документує порт. CMD -- команда при запуску контейнера. Кожна інструкція створює шар (layer), що кешується -- порядок важливий для швидкості збірки. Multi-stage builds дозволяють збирати у повному образі, а результат копіювати у мінімальний.
Volumes та мережі
- Volume -- персистентне зберігання даних
- Bind mount -- файли хоста в контейнері
- Bridge network -- зв\'язок між контейнерами
- -v host:container -- монтування при запуску
Оптимізація образу
- Alpine -- мінімальний базовий образ (5 МБ)
- Multi-stage -- збірка + мінімальний результат
- .dockerignore -- виключити зайві файли
- Кешування шарів -- COPY package*.json перед кодом
Docker Compose та Kubernetes
Docker Compose (docker-compose.yml) описує багатоконтейнерний додаток: веб-сервер, база даних, кеш. Один файл визначає сервіси, порти, volumes, змінні оточення та залежності (depends_on). docker compose up -d запускає весь стек. Kubernetes -- оркестратор для продакшену: автомасштабування, self-healing, rolling updates, балансування навантаження. Docker для розробки та простих деплоїв, Kubernetes для масштабних систем.
Про тест
Тест «Docker та контейнеризація» містить 20 питань про Dockerfile, контейнери vs VM, docker commands, volumes, мережі, Docker Compose, оптимізацію образів та Kubernetes.