Ответ
Docker — это платформа для разработки, доставки и запуска приложений в изолированных, легковесных средах, называемых контейнерами. Контейнер инкапсулирует приложение со всеми его зависимостями: кодом, средой выполнения, системными инструментами, библиотеками и настройками.
Ключевые концепции:
- Docker Image: Неизменяемый шаблон (слоистая файловая система + метаданные), на основе которого создаются контейнеры. Например,
nginx:alpine,python:3.11-slim. - Docker Container: Запущенный экземпляр образа. Это изолированный процесс в пользовательском пространстве хоста, разделяющий ядро ОС хоста.
- Dockerfile: Текстовый файл с инструкциями по сборке образа.
- Docker Registry (Docker Hub): Хранилище для образов.
Практический пример: Dockerfile для Node.js приложения
# 1. Базовый образ. Определяет ОС и среду выполнения.
FROM node:18-alpine
# 2. Устанавливаем рабочую директорию внутри контейнера.
WORKDIR /app
# 3. Копируем файлы зависимостей отдельно для кэширования слоя.
COPY package*.json ./
# 4. Устанавливаем зависимости.
RUN npm ci --only=production
# 5. Копируем весь исходный код приложения.
COPY . .
# 6. Объявляем порт, который будет слушать приложение.
EXPOSE 3000
# 7. Команда для запуска контейнера.
CMD ["node", "server.js"]
Сборка и запуск:
# Собрать образ с тегом 'my-app'
docker build -t my-app .
# Запустить контейнер из образа, пробросив порт 3000 контейнера на порт 8080 хоста
docker run -p 8080:3000 --name my-app-container my-app
| Преимущества перед традиционным деплоем и виртуальными машинами (ВМ): | Аспект | Виртуальная машина | Docker-контейнер |
|---|---|---|---|
| Гостевая ОС | Полная ОС поверх гипервизора | Разделяет ядро хоста, содержит только приложение и зависимости | |
| Размер | ГБ | МБ (образы легче на порядки) | |
| Старт | Минуты | Секунды/миллисекунды | |
| Изоляция | Полная (аппаратный уровень) | Процессная (на уровне ядра) | |
| Плотность | Низкая (десятки ВМ на хост) | Высокая (сотни контейнеров) |
Docker стандартизирует среду выполнения, решая проблему "у меня работает, а у тебя нет" и является фундаментом для современных CI/CD пайплайнов и оркестраторов, таких как Kubernetes.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶