Клонировать образ из реестра докера в другой

У меня есть личный реестр с набором изображений. Это можно представить как хранилище приложений. Мое приложение может принимать эти приложения и запускать их на других компьютерах. Чтобы добиться этого, мое приложение сначала извлекает изображение из частного реестра, а затем копирует его в локальный реестр для дальнейшего использования.

Шаг как следует:

docker pull privateregistry:5000/company/app:tag
docker tag privateregistry:5000/company/app:tag localregistry:5000/company/app:tag
docker push localregistry:5000/company/app:tag

Потом на другой машине в моей сети:

docker pull localregistry:5000/company/app:tag

Есть ли способ эффективно скопировать изображение из хранилища в другое, не используя промежуточный клиент?

2 ответа

Вы можете использовать docker save чтобы сохранить изображения в архиве tar, а затем скопировать tar на новый хост и использовать docker load распаковать его.

прочтите ссылки ниже, чтобы узнать больше https://docs.docker.com/engine/reference/commandline/save/

Есть ли способ эффективно скопировать изображение из репозитория в другой, не используя промежуточный клиент-докер?

Да, сегодня это реализовано множеством инструментов. RedHat продвигает свой skopeo, у Google есть кран , а я работаю самостоятельно с regclient. Каждый из этих инструментов общается напрямую с сервером реестра, не нуждаясь в движке докеров. И, по крайней мере, с regclient (я не тестировал другие), они будут копировать только слои, которых еще нет в целевом реестре, избегая необходимости снова извлекать слои. Кроме того, вы можете переместить многоплатформенный образ, сохранив все доступные платформы, которые вы потеряете с docker pull поскольку это разыменовывает изображение для одной платформы.

Другие вопросы по тегам