Что такое Docker Registry и чем он отличается от Docker Hub
Что проверяют
Понимаете ли вы, откуда берётся образ, который вы указали в FROM или в манифесте. Вопрос простой, но за ним тянется практика: где лежат образы вашего сервиса, у кого к ним доступ и что станет со сборкой, когда внешний реестр недоступен или ограничил скачивания.
Как отвечать
Registry это служба хранения образов, говорящая по стандартному протоколу: клиент кладёт туда слои и манифесты и забирает их по имени и тегу. Docker Hub это один из таких реестров, публичный и вдобавок используемый по умолчанию: короткое имя образа разворачивается в адрес Hub, если реестр не указан явно.
То есть противопоставления по существу нет. Честное сравнение это Hub против любого другого реестра: облачного у провайдера, self-hosted решения вроде Harbor, реестра внутри системы контроля версий или сборочной системы.
Что важно на практике: адрес реестра это часть имени образа; тег подвижен, дайджест нет, поэтому прод пинят по дайджесту; в приватный реестр ходят через docker login и токен из секретов CI.
docker tag app:1.4.0 registry.internal/team/app:1.4.0
docker push registry.internal/team/app:1.4.0Для Python-сервиса свой реестр обычно идёт в паре со своим индексом пакетов: тогда ни базовый образ, ни колёса зависимостей не зависят от чужой доступности.
Где спотыкаются
Считают Hub и Registry разными технологиями. Hub это реестр, отличие не в протоколе, а в том, кто им владеет, какие даёт квоты, права и проверку образов.
Собирают прод из публичных образов по подвижному тегу. Анонимные скачивания ограничивают по количеству, тег могут перезаписать, и однажды сборка соберётся не из того, из чего вчера.
Кладут секреты внутрь образа и считают приватный реестр защитой. Любой, кто способен скачать образ, читает все его слои. Ключи передают переменными окружения при запуске или секретами оркестратора.