Разница между реестром и хранилищем Docker
Я смущен относительно разницы между реестрами докеров и репозиториями. Похоже, что документация Docker использует два слова взаимозаменяемо. Кроме того, репозитории иногда упоминаются как изображения, например, из их документов:
Чтобы подтолкнуть репозиторий к его реестру, вы должны иметь имя изображение или передали ваш контейнер названному изображению, как мы видели здесь.
Теперь вы можете переместить этот репозиторий в реестр, указанный его имя или тег.
Как вы можете перетащить репозиторий в реестр? Не подталкиваете ли вы изображение к репозиторию?
Ответы
Ответ 1
Реестр Docker - это служба, которая хранит ваши изображения докеров.
Реестр докеров может быть размещен сторонним, как государственным или частным реестром, как один из следующих реестров:
или вы можете разместить реестр докеров самостоятельно/
(подробнее см. https://docs.docker.com/docker-trusted-registry/).
Репозиторий Docker представляет собой набор различных изображений докеров с тем же именем, которые имеют разные теги. Тег - это буквенно-цифровой идентификатор изображения в репозитории.
Например, см. https://hub.docker.com/r/library/python/tags/. Для официального изображения python существует множество разных тегов, эти теги являются членами официального репозитория python в Docker Hub. Docker Hub является реестром докеров, который размещается Docker.
Чтобы узнать больше:
Ответ 2
Из книги Использование Docker, разработка и развертывание программного обеспечения с контейнерами
Реестры, репозитории, изображения и теги
Существует иерархическая система для хранения изображений.
Используется следующая терминология:
Реестр
Служба, отвечающая за размещение и распространение изображений. Реестр по умолчанию - это Docker Hub.
Репозиторий
Коллекция связанных изображений (обычно предоставляющих разные версии одного и того же приложения или службы).
Тег
Алфавитно-цифровой идентификатор, прикрепленный к изображениям в репозитории (например, 14.04 или стабильный).
Итак, команда docker pull amouat/revealjs:latest
загрузит изображение, помеченное последним в репозиторий amouat/revealjs
из реестра Docker Hub.
Ответ 3
Дополняя информацию:
- Обычно вы пересылаете репозиторий в реестр (и все изображения, которые являются его частью). Но вы можете вставить одно изображение в реестр. Во всех случаях вы используете
docker push
.
- Изображение имеет 12-шестнадцатеричный идентификатор изображения, но также идентифицируется:
namespace/repo-name:tag
- Полное имя изображения может быть дополнительно префикс имени и порта хоста реестра:
myregistryhost:5000/namespace/repo-name:tag
- Общим соглашением об именах является использование имени пользователя реестра как того, что я называл "пространство имен".
Ответ 4
Репозиторий докеров - это милая комбинация registry
и image
.
docker tag foo <registry>/<image>:<tag>
совпадает с
docker tag foo <repository>:<tag>