Ответ
Docker решает фундаментальную проблему "на моей машине все работает", упаковывая приложение и все его зависимости (библиотеки, системные утилиты, код) в стандартизированный блок — контейнер.
Контейнер гарантирует, что приложение будет работать одинаково в любой среде: на ноутбуке разработчика, на тестовом стенде или в продакшене.
Ключевые преимущества:
- Изоляция окружений: Контейнеры изолированы друг от друга и от хост-системы, что исключает конфликты зависимостей.
- Переносимость и консистентность: Образ Docker (
image) можно запустить на любой системе, где установлен Docker, обеспечивая идентичное окружение. - Эффективное использование ресурсов: Контейнеры используют ядро операционной системы хоста, что делает их значительно легче и быстрее виртуальных машин.
- Быстрое развертывание и масштабирование: Запуск нового контейнера занимает секунды, что упрощает горизонтальное масштабирование.
Пример: Dockerfile для простого Python-приложения
# Используем официальный базовый образ Python
FROM python:3.9-slim
# Устанавливаем рабочую директорию внутри контейнера
WORKDIR /app
# Копируем файл зависимостей и устанавливаем их
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Копируем остальной код приложения
COPY . .
# Указываем команду для запуска приложения
CMD ["python", "./app.py"]
Сборка и запуск контейнера:
# Собрать образ с тегом 'myapp'
docker build -t myapp .
# Запустить контейнер, пробросив порт 5000
docker run -p 5000:5000 myapp