Расскажи про свой опыт работы с Docker

«Расскажи про свой опыт работы с Docker» — вопрос из категории Docker, который задают на 51% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я работаю с Docker более 3 лет, в основном в контексте CI/CD и развертывания микросервисных приложений. Мой опыт включает:

  • Создание и оптимизацию Dockerfile: Использование многоступенчатых сборок для уменьшения размера образов, правильное кеширование слоев, работа с .dockerignore.
  • Оркестрация: Работа с Docker Compose для локальной разработки и тестирования, а также развертывание в Kubernetes (k8s) в продакшн-среде.
  • Интеграция в CI/CD: Настройка пайплайнов в GitLab CI и GitHub Actions для автоматической сборки, тестирования и публикации образов в реестр (например, GitLab Container Registry или Docker Hub).
  • Решение проблем: Отладка сетевых взаимодействий между контейнерами, настройка томов для сохранения данных, мониторинг с помощью cAdvisor и интеграция с Prometheus/Grafana.

Пример оптимизированного Dockerfile для Python-приложения:

# Этап сборки
FROM python:3.9-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt

# Финальный этап
FROM python:3.9-slim
WORKDIR /app
# Копируем только установленные пакеты из этапа builder
COPY --from=builder /root/.local /root/.local
# Добавляем путь к пакетам
ENV PATH=/root/.local/bin:$PATH
# Копируем исходный код приложения
COPY . .
# Запускаем приложение
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]

Видео-ответы