Ответ
В DevOps-практике есть несколько основных способов обмена Docker-образами.
1. Использование Docker Registry (рекомендуемый способ) Это самый распространенный и удобный метод. Вы загружаете (push) образ в реестр, откуда его может скачать (pull) другой пользователь.
- Публичный реестр (Docker Hub):
# Тегируем образ с именем пользователя на Docker Hub docker tag my-local-image:latest username/my-image:prod-v1 # Логинимся в Docker Hub (если еще не сделано) docker login # Загружаем образ docker push username/my-image:prod-v1Другой разработчик затем выполнит:
docker pull username/my-image:prod-v1 - Приватный реестр (Harbor, GitLab Container Registry, AWS ECR, GCR):
Принцип тот же, но требуется аутентификация в конкретном реестре и указание его полного адреса.
docker tag my-app:latest registry.mycompany.com/team/my-app:latest docker push registry.mycompany.com/team/my-app:latest
2. Сохранение и загрузка образа в файл (TAR-архив) Полезно для передачи образов в изолированных средах без доступа к интернету или внутреннему реестру.
- Экспорт образа в файл:
docker save -o my-application-image.tar my-app:latestЭтот
.tarфайл можно передать по почте, через файлообменник или флешку. - Импорт образа из файла:
docker load -i my-application-image.tarВажно:
docker save/loadсохраняет всю историю слоев и теги образа.
3. Запуск локального Docker Registry Для быстрого обмена в пределах одной сети можно развернуть временный реестр.
# Запускаем registry контейнер
docker run -d -p 5000:5000 --restart=always --name registry registry:2
# Тегируем образ для локального реестра
docker tag my-image:latest localhost:5000/my-image:latest
# Пушим в локальный реестр
docker push localhost:5000/my-image:latest
Коллега в той же сети сможет скачать образ, обратившись к IP-адресу вашей машины: docker pull 192.168.1.10:5000/my-image:latest. Для production этот метод не рекомендуется без настройки аутентификации и TLS.