Какую цель это служит?Это потому, что сервер, на котором я ssh, должен иметь локальную копию изображения?И чтобы сделать это, один из подходов заключается в извлечении образа из реестра?
С точки зрения CI / CD реестр докеров является эквивалентом репозитория артефактов для изображений.Вы хотите, чтобы центральный источник этих образов загружался с одного хоста докера на другой, поскольку ваш сервер сборки, скорее всего, отличается от ваших серверов dev и prod.
Не могу я просто загрузитьобраз с одного компьютера (скажем, CI / CD-сервер) через SSH?использование dockerhub мне кажется излишне церемонным.Как и в этом примере (я знаю, этот API устарел, но он иллюстрирует мою точку зрения).
Можно сохранять / загружать изображения непосредственно на хост докера, но естьнесколько серьезных недостатков.Во-первых, вы теряете любую выгоду от многоуровневой файловой системы докера.При создании приложения в CI / CD большую часть времени необходимо перестраивать только последние несколько слоев с изменениями вашего приложения.Там должно быть то же самое предыдущее базовое изображение и различные общие слои, чтобы создать Ваше приложение, которое остается идентичным.В реестре эти общие уровни видны, только различие выталкивается и вытягивается, что ускоряет развертывание и экономит дисковое пространство.С помощью команды сохранения / загрузки все слои отправляются каждый раз, поскольку вы не знаете состояние удаленного сервера при запуске сохранения.
Во-вторых, это не масштабируется при добавлении хостов для запуска образов.,Каждому хосту потребуется скопировать образ, если вы захотите запустить его на этом хосте, например, для обработки отработки отказа или балансировки нагрузки.Это также не будет работать, если вы перейдете в режим роя или kubernetes, так как вы можете легко добавить новые узлы в кластер, у которых не будет вашего изображения.По умолчанию режим Swarm ищет sha256 образа в реестре, чтобы гарантировать, что всегда используется один и тот же образ, даже если тег изменен в реестре после первоначального развертывания.
Имейте в виду, что вы можете запустить свой собственныйсервер реестра (есть образ докера и API-интерфейс открыт).Многие репозитории артефактов (например, artifactory и nexus) включают поддержку реестра Docker.И многие облачные провайдеры включают реестр в свои предложения контейнеров.Поэтому вам не нужно переходить на удаленный док-концентратор для локального развертывания.
И последнее замечание: сервер реестра полезен для разработчиков, которые теперь могут использовать тот же образ, который используется в dev и prod, для тестирования на другихмикросервисы, которые они пишут локально, без необходимости создавать все локально или ssh на CI / CD-сервере или даже в prod, чтобы сохранять и отправлять изображения обратно на свои ноутбуки.