Ответ
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер — это легковесная, исполняемая единица программного обеспечения, которая инкапсулирует код, зависимости, системные инструменты и настройки, гарантируя одинаковое выполнение в любой среде.
Ключевые преимущества для разработки и тестирования:
- Консистентность окружений: "Работает на моей машине" больше не проблема. Приложение в контейнере будет одинаково работать на Windows, macOS, Linux и сервере.
- Изоляция: Приложение и его зависимости изолированы от хостовой ОС и других контейнеров.
- Легковесность: Контейнеры используют ядро хостовой ОС, что делает их намного быстрее и меньше виртуальных машин.
- Повторяемость и автоматизация: Контейнеры создаются из описаний (Dockerfile), что позволяет автоматизировать сборку и развертывание в CI/CD.
Базовые компоненты:
- Dockerfile — текстовый файл с инструкциями по сборке образа.
- Image (Образ) — шаблон только для чтения, из которого создаются контейнеры.
- Container (Контейнер) — запущенный экземпляр образа.
Пример простого Dockerfile для Python-приложения:
# Используем официальный базовый образ Python
FROM python:3.11-alpine
# Устанавливаем рабочую директорию внутри контейнера
WORKDIR /app
# Копируем файл зависимостей и устанавливаем их
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Копируем весь исходный код приложения
COPY . .
# Команда для запуска приложения при старте контейнера
CMD ["python", "app.py"]
Основные команды:
# Собрать образ из Dockerfile в текущей директории
docker build -t my-app:1.0 .
# Запустить контейнер из образа, пробросив порт 4000 хоста на порт 80 контейнера
docker run -p 4000:80 my-app:1.0
# Показать запущенные контейнеры
docker ps
# Остановить контейнер
docker stop <container_id>
В тестировании Docker используется для быстрого развертывания тестовых сред, изолированного запуска автотестов и компонентного тестирования микросервисов.