Docker — это платформа с открытым исходным кодом для автоматизации развертывания приложений в виде переносимых, автономных контейнеров.
Если говорить проще:
Основная идея
Docker позволяет упаковать ваше приложение со всеми его зависимостями (библиотеки, настройки, код) в единый "контейнер", который будет одинаково работать на любой системе, где установлен Docker.
Ключевые компоненты
1. Docker-образ (Image) — шаблон/рецепт для создания контейнеров
2. Docker-контейнер — запущенный экземпляр образа
3. Dockerfile — текстовый файл с инструкциями для сборки образа
4. Docker Hub — репозиторий готовых образов (как GitHub для кода)
Простая аналогия
· Образ — как чертеж дома (Dockerfile) или готовый проект (image)
· Контейнер — как построенный по этому проекту реальный дом
· Вы можете построить много одинаковых домов по одному проекту
Преимущества
✅ Изоляция — приложения не конфликтуют друг с другом
✅ Переносимость — работает везде, где есть Docker
✅ Повторяемость — одинаковое поведение на всех системах
✅ Быстрота — контейнеры запускаются за секунды
✅ Эффективность — меньше ресурсов, чем у виртуальных машин
Пример использования
dockerfile
# Dockerfile
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
bash
# Сборка и запуск
docker build -t my-app .
docker run -p 3000:3000 my-app
Отличие от виртуальных машин
ВМ эмулируют полноценную ОС, а контейнеры используют ядро хостовой ОС, что делает их гораздо легче и быстрее.
Коротко: Docker — это способ упаковать приложение в "коробку", которая будет работать одинаково где угодно.