Docker и Kubernetes — не конкуренты. Docker создаёт контейнеры, Kubernetes ими управляет. Разбираем что это значит на практике и когда нужен каждый инструмент.

- Что умеет Docker
- Что умеет Kubernetes
- Сравнение Docker и Kubernetes
- Типичный путь развития проекта
- Kubernetes — краткое знакомство
- Managed Kubernetes — проще чем кажется
- Когда не нужен Kubernetes
- Часто задаваемые вопросы
- Нужно ли знать Docker перед Kubernetes?
- Kubernetes заменяет Docker?
- Какой managed Kubernetes выбрать для старта?
- Что читать дальше по Docker
Что умеет Docker
Docker — инструмент для работы с контейнерами на одном хосте. Три основных задачи:
- Создание образов —
docker buildчитает Dockerfile и собирает образ - Запуск контейнеров —
docker runзапускает контейнер из образа - Управление несколькими контейнерами на одном хосте —
docker compose
# Docker Compose — просто и понятно
docker compose up -d
# 3 сервиса (app + db + nginx), 1 сервер, работает
Ограничения Docker Compose — всё работает на одном сервере:
- Нет распределения нагрузки по нескольким серверам
- Если сервер упал — всё приложение недоступно
- Нет автоматического масштабирования под нагрузку
- Нет балансировки трафика между серверами
Для большинства проектов это не проблема. Один мощный сервер с Docker Compose выдерживает сотни тысяч запросов в день.
Что умеет Kubernetes
Kubernetes (K8s) — оркестратор контейнеров. Он управляет контейнерами на кластере из нескольких серверов:
- Запускает контейнеры на подходящих узлах кластера
- Автоматически перезапускает упавшие контейнеры
- Масштабирует приложение при росте нагрузки (добавляет реплики)
- Rolling update — обновление без даунтайма (по одному поду за раз)
- Service discovery и балансировка трафика между репликами
- Управление конфигурацией и секретами (ConfigMap, Secret)
Сравнение Docker и Kubernetes
| Docker + Compose | Kubernetes | |
|---|---|---|
| Серверов | 1 | Много (кластер от 3) |
| Сложность | Низкая | Высокая |
| Порог входа | Часы | Недели |
| Автомасштабирование | Нет | Да |
| Self-healing | Базовое (restart policy) | Продвинутое (liveness/readiness probes) |
| Rolling deployments | Нет | Да |
| Балансировка трафика | Базовая | Продвинутая (Ingress, LoadBalancer) |
| Стоимость | Дёшево (1 VPS от $5) | Дорого (3+ серверов) |
| Когда использовать | Стартап, до 100k RPS | Enterprise, высокая нагрузка |
Типичный путь развития проекта
Большинство проектов проходят один и тот же путь:
docker run # проверить идею, запустить первый контейнер
↓
docker compose # локальная разработка + небольшой продакшн
↓
1 VPS + Compose # первые пользователи, реальная нагрузка
↓
Kubernetes # при серьёзном масштабировании
Большинство стартапов долгие годы работают на этапе «1 VPS + Compose» и никогда не доходят до Kubernetes — потому что нагрузка не требует. Переходить на K8s стоит только когда упёрся в реальные ограничения, не «на вырост».
Kubernetes — краткое знакомство
Вместо docker-compose.yml в Kubernetes используются YAML манифесты — Deployment, Service, Ingress:
# deployment.yaml — аналог docker-compose, но для кластера
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3 # 3 копии контейнера на разных узлах
selector:
matchLabels:
app: myapp
template:
spec:
containers:
- name: myapp
image: myapp:1.0
ports:
- containerPort: 5000
# Применить манифест
kubectl apply -f deployment.yaml
# Масштабировать до 5 реплик
kubectl scale deployment myapp --replicas=5
# Статус подов
kubectl get pods
# NAME READY STATUS RESTARTS AGE
# myapp-abc123-1 1/1 Running 0 2m
# myapp-def456-2 1/1 Running 0 2m
# myapp-ghi789-3 1/1 Running 0 2m
# Обновить образ (rolling update без даунтайма)
kubectl set image deployment/myapp myapp=myapp:2.0
Managed Kubernetes — проще чем кажется
Настроить кластер Kubernetes самостоятельно — сложная задача. Managed сервисы берут операционную часть на себя: обновления, мониторинг узлов, failover:
| Провайдер | Сервис | Особенности |
|---|---|---|
| AWS | EKS | Enterprise, широкая экосистема |
| Google Cloud | GKE | Лучший managed K8s, Google создали K8s |
| DigitalOcean | DOKS | Дёшево, просто, хорош для старта |
| Yandex Cloud | Managed K8s | Для проектов в РФ |
# DigitalOcean — создать кластер за 5 минут через CLI
doctl kubernetes cluster create myapp-cluster \
--node-pool "name=default;size=s-2vcpu-4gb;count=2"
# Или через веб-интерфейс — несколько кликов
Когда не нужен Kubernetes
Kubernetes не нужен если:
- Один разработчик или маленькая команда без DevOps
- Трафик до 100k запросов в день — один сервер справится
- Нет бюджета на 3+ серверов (минимальный кластер)
- Монолитное приложение — не нужна оркестрация микросервисов
- Нет времени на обучение — K8s требует недели чтобы разобраться
Kubernetes оправдан когда нужно 99.99% uptime, несколько регионов, сотни микросервисов, автомасштабирование под переменную нагрузку, или в команде есть DevOps/Platform инженеры.
Часто задаваемые вопросы
Нужно ли знать Docker перед Kubernetes?
Да, обязательно. Kubernetes управляет контейнерами — если не понимаешь как работает Docker, как устроен Dockerfile, как работают образы и volumes, разобраться с K8s будет очень сложно. Минимальная база: уметь написать Dockerfile, собрать образ, запустить через docker compose. С этим фундаментом переход к Kubernetes логичен и понятен — те же концепции, больший масштаб.
Kubernetes заменяет Docker?
Нет. Kubernetes не заменяет Docker — он использует его (или другой container runtime). Docker создаёт образы и запускает контейнеры, Kubernetes оркестрирует эти контейнеры на кластере. Без Docker (или аналога) Kubernetes просто нечем управлять. Когда говорят «Kubernetes заменил Docker» — обычно имеют в виду что K8s внутри перешёл с Docker Engine на containerd как container runtime. Но образы Docker работают в Kubernetes без изменений.
Какой managed Kubernetes выбрать для старта?
Для первого знакомства — DigitalOcean Kubernetes (DOKS): дешевле чем AWS/GCP, простой интерфейс, хорошая документация. Кластер из 2 нод стоит около $24/месяц. Для обучения — можно использовать minikube (локальный K8s на одной машине) или kind (K8s в Docker). Для продакшн в крупных компаниях — GKE (Google создали Kubernetes, лучшая интеграция) или EKS (если уже на AWS). Для РФ — Yandex Cloud Managed Kubernetes.
Что читать дальше по Docker
Чтобы связать тему с соседними практическими материалами, дальше удобно открыть:
- Docker Compose — сравнить Kubernetes с Docker Compose.
- Dockerfile — подготовить контейнерный образ.
- docker build — собрать образ для запуска.
- Docker network — разобрать сетевую часть контейнеров.



