Определение простыми словами
Docker — инструмент, который собирает приложение и всё, что ему нужно (библиотеки, конфиги, рантайм), в один файл-образ. Этот образ запускается на любом сервере с Docker одинаково — и на ноутбуке разработчика, и на проде в дата-центре.
В отличие от виртуальной машины, контейнер не тащит с собой целую ОС: он использует ядро хоста и изолируется через namespaces и cgroups. Поэтому контейнер стартует за 1 секунду и весит десятки МБ вместо гигабайтов.
Контейнер vs виртуалка vs хост
| Параметр | Docker | KVM (ВМ) | Прямо на хосте |
|---|---|---|---|
| Старт | ~1 сек | 20–60 сек | — |
| Накладные расходы | Минимум (общее ядро) | Заметные (своё ядро) | Нет |
| Изоляция | Процесс/namespace | Полная (гипервизор) | Нет |
| Размер | 5–500 МБ | 1–20 ГБ | — |
| Запуск Windows | Только Linux-контейнеры | Любая ОС | Любая ОС |
Кейсы использования
- Изолированный запуск WordPress + MySQL — два контейнера через docker-compose, поднимается одной командой.
- CI/CD пайплайны — каждый билд в чистом контейнере, никаких «мусорных» зависимостей.
- Микросервисы — каждый сервис в своём контейнере, оркестрация через Kubernetes.
- Локальная разработка с разными версиями — Python 3.8 и 3.12 рядом без конфликтов.
- Когда Docker НЕ нужен: один статический сайт на shared-хостинге не требует контейнеров — это лишний слой сложности.
Технические детали
Базовый Dockerfile и запуск контейнера:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "bot.py"]
# Сборка и запуск
docker build -t my-bot .
docker run -d --name bot --restart=always my-bot
docker logs -f bot
Образы хранятся в реестре (Docker Hub, GitHub Container Registry или приватный containerd). Минимальные требования к VPS: 1 vCPU, 1 ГБ RAM, 10 ГБ SSD. Альтернативы Docker — Podman (rootless) и LXC (системные контейнеры).
🔥 Где это применяется
Частые вопросы
Чем Docker отличается от виртуальной машины?
Контейнер использует ядро хост-системы и весит десятки МБ. Виртуалка имеет своё ядро и весит гигабайты. Контейнер стартует за секунду, ВМ — за минуту.
Сколько контейнеров можно запустить на VPS с 2 ГБ RAM?
Зависит от приложений: 5–10 простых сервисов (бот, Nginx, Postgres) — без проблем. Тяжёлые (Elasticsearch, Java) — 1–2 максимум.
Подходит ли Docker для продакшена?
Да, это стандарт индустрии с 2015 года. Под нагрузкой используют оркестратор Kubernetes или Docker Swarm. Для одного сервера хватает docker-compose.
Можно ли запускать Docker на shared-хостинге?
Нет. Docker требует root-доступ к ядру, а shared-хостинг такого не даёт. Минимум — VPS на KVM.