Docker — технология контейнеризации. Она решает классическую проблему: "на моём компьютере работает". С помощью Docker приложение и все его зависимости упаковываются в "контейнер", который работает одинаково везде.
Чем это отличается от виртуальных машин
Виртуальная машина эмулирует железо и запускает свою ОС. Тяжело — гигабайты, минуты запуска.
Контейнер использует ядро хост-ОС, только изолирует процессы и файловую систему. Лёгкие — мегабайты, секунды запуска.
Ключевые концепты
- Image: шаблон для создания контейнеров. Содержит приложение, зависимости, файлы
- Container: запущенный экземпляр image
- Dockerfile: инструкция, описывающая, как собрать image
- Registry: хранилище images (Docker Hub — общий, можно свой)
Пример Dockerfile
FROM node:22
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]
Эти 6 строк описывают: взять базовый image с Node.js 22, скопировать package.json, установить зависимости, скопировать приложение, запустить команду.
Зачем это нужно
- Изоляция — разные приложения не мешают друг другу
- Переносимость — одинаковая работа на любом сервере
- Масштабирование — легко запустить 100 экземпляров
- DevOps — облегчает CI/CD, деплой
Kubernetes
Для управления множеством контейнеров в продакшене используется Kubernetes. Автоматическое развёртывание, масштабирование, восстановление после сбоев. Сложен, но стал стандартом для больших систем.
Docker Compose
Для разработки — proще чем Kubernetes. Один yaml-файл описывает все нужные сервисы (веб, БД, очередь), запуск одной командой.
Когда Docker не нужен
Для маленьких проектов с одним сервером — обычный деплой без контейнеров быстрее. Docker имеет overhead сложности, который окупается при распределённых системах.
Есть вопрос?
Вопросы и ответы · 0
Не поняли что-то?
Зарегистрируйтесь — и сможете задать вопрос автору объяснения.
Загрузка комментариев…