Что такое Docker Registry?

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

Ответ

Docker Registry — это серверное приложение для хранения и распространения Docker-образов. Это ключевой компонент конвейера CI/CD, обеспечивающий централизованное и контролируемое хранение артефактов.

Типы registry:

  • Публичные: Docker Hub (по умолчанию), Quay.io, GitHub Container Registry (GHCR). Используются для публичных образов.
  • Приватные: Запускаются самостоятельно (Docker Registry, Harbor, Nexus) или как managed-сервисы (AWS ECR, Google Container Registry, Azure Container Registry). Используются для внутренних образов компании.

Рабочий процесс в CI/CD:

# 1. Сборка образа из кода в CI-пайплайне
docker build -t my-registry.company.com/team/app:${CI_COMMIT_SHA} .

# 2. Аутентификация в приватном registry
echo $REGISTRY_PASSWORD | docker login my-registry.company.com -u $REGISTRY_USER --password-stdin

# 3. Пуш образа в registry
docker push my-registry.company.com/team/app:${CI_COMMIT_SHA}

# 4. Деплой: Pull образа на продакшн-сервере
docker pull my-registry.company.com/team/app:${CI_COMMIT_SHA}
docker run -d my-registry.company.com/team/app:${CI_COMMIT_SHA}

Лучшие практики:

  • Используйте семантическое версионирование и уникальные теги: :v1.2.3, :${GIT_SHA}, избегайте плавающего тега :latest в продакшне для точного контроля версий.
  • Сканирование образов (Image Scanning): Интегрируйте сканеры уязвимостей (Trivy, Grype) в пайплайн перед пушем в registry.
  • Неизменяемость (Immutable images): Не обновляйте существующий тег. Соберите новый образ для каждого изменения.
  • Репликация и гео-распределение: Для глобальных команд настройте репликацию registry в разные регионы для ускорения загрузки.