Что такое Docker Registry и чем он отличается от Docker Hub
Что проверяют
Понимаете ли вы, где живут образы вашего сервиса и как они попадают на прод. Для Go-разработчика вопрос прикладной: бинарник собирается в контейнере, кладётся в маленький образ и уезжает в реестр, из которого его забирает кластер.
Как отвечать
Registry это служба, хранящая образы по протоколу реестра: манифест описывает образ, слои адресуются по дайджесту содержимого, тег это подвижная метка поверх дайджеста. Docker Hub это конкретный публичный реестр, который вдобавок подставляется по умолчанию, когда в имени образа не указан хост.
Поэтому вопрос звучит как противопоставление, но им не является: Hub это частный случай реестра. Сравнивать честно так: Hub против облачного реестра провайдера, против self-hosted (Harbor, референсная реализация, написанная, кстати, на Go) и против реестра, встроенного в сборочную систему.
Для Go стоит добавить про многоступенчатую сборку: бинарник собирается в образе с тулчейном, а едет в пустой или минимальный образ, весит единицы мегабайт и почти не даёт поверхности для уязвимостей. Ходить в реестр из кода удобно библиотекой go-containerregistry, не дёргая CLI.
crane digest registry.internal/team/api:1.4.0Где спотыкаются
Считают Hub и Registry альтернативами. Это разные уровни: протокол и служба против конкретного хостинга. Выбор на деле про квоты, права, проверку образов и близость к кластеру.
Выкатывают по тегу. Тег перезаписывается, и два узла кластера легко поднимут разные сборки. В манифест кладут дайджест, а тег оставляют людям.
Забывают про архитектуру. Образ, собранный на ноутбуке с процессором arm, не запустится на узле x86. Для Go это лечится кросс-сборкой и мультиархитектурным манифестом, но помнить об этом надо на этапе публикации.