Ответ
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 в разные регионы для ускорения загрузки.