Как поделиться образом Docker

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

Ответ

Для обмена Docker-образами я обычно использую Docker Registry. Конкретный выбор зависит от контекста: публичный образ, приватный корпоративный или быстрая передача между разработчиками.

Основной способ: Docker Registry.

  1. Тегирование образа. Перед отправкой образ нужно корректно протегировать, указав адрес целевого registry.

    # Тегирование для Docker Hub
    docker tag my-service:latest username/my-service:1.2.0
    
    # Тегирование для приватного реестра GitLab
    docker tag my-service:latest registry.gitlab.com/my-group/my-project/my-service:latest
  2. Аутентификация и отправка. Необходимо залогиниться в registry и выполнить push.

    # Логин в Docker Hub
    docker login
    # Логин в приватный реестр GitLab (используя Personal Access Token)
    docker login registry.gitlab.com -u <username> -p <token>
    
    # Отправка образа
    docker push username/my-service:1.2.0
    docker push registry.gitlab.com/my-group/my-project/my-service:latest

Альтернативный способ: Сохранение в файл. Полезен для передачи больших образов в средах с ограниченным сетевым доступом или для создания резервных копий.

# Сохраняем образ в архив
docker save -o my-service-backup.tar my-service:latest
# На другой машине загружаем образ из архива
docker load -i my-service-backup.tar

Недостаток этого метода: Файл архива содержит все слои образа и может быть очень большим. Кроме того, теряется история и удобство управления версиями, которые предоставляет registry.

Рекомендации:

  • Всегда используйте семантическое версионирование тегов (:1.2.0, :latest) вместо случайных.
  • Для приватных registry настройте автоматическую аутентификацию в CI/CD пайплайнах с помощью сервисных аккаунтов или токенов.
  • Учитывайте политики хранения образов в registry, чтобы автоматически удалять старые и неиспользуемые теги.