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

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

Ответ

Есть несколько основных способов поделиться Docker-образом, выбор зависит от аудитории и требований к безопасности.

1. Публичный Docker Registry (Docker Hub). Самый простой способ для публичных образов. Сначала нужно залогиниться и протегировать образ, указав имя своего репозитория.

docker login
docker tag my-app:latest mydockerhubusername/my-app:1.0
docker push mydockerhubusername/my-app:1.0

Теперь любой может получить образ командой docker pull mydockerhubusername/my-app:1.0.

2. Приватный Docker Registry. Для внутренних или коммерческих образов мы используем приватный реестр. Это может быть облачный сервис (AWS ECR, Google Container Registry) или self-hosted решение (Harbor, Nexus). Процесс аналогичен, но включает аутентификацию в конкретный registry.

# Пример для AWS ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789.dkr.ecr.us-east-1.amazonaws.com
docker tag my-app:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:prod
docker push 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:prod

3. Образ в виде файла (для оффлайн-сценариев). Иногда нужно передать образ напрямую, без registry. Для этого можно сохранить его в .tar архив.

# Экспорт образа в файл
docker save -o my-app-image.tar my-app:latest
# Файл my-app-image.tar можно скопировать на другую машину
# Импорт образа из файла
docker load -i my-app-image.tar

Важно: Этот метод неудобен для частого обмена и не поддерживает метаданные, как registry (например, многослойность для экономии места при пулле).

4. Docker Registry при CI/CD системе. Такие системы, как GitLab CI или GitHub Actions, предоставляют встроенные registry для образов, собранных в пайплайнах. Образ автоматически пушится туда после успешной сборки и может быть использован в последующих стадиях деплоя.