Поиск по сайту:

Как работают реестры контейнеров Docker?


Реестры контейнеров Docker, такие как Docker Hub, являются платформами для размещения и совместного использования контейнеров Docker. Хотя Docker Hub по умолчанию ориентирован на общедоступные контейнеры, большинство облачных провайдеров, таких как AWS и GCP, будут запускать свои собственные частные реестры контейнеров.

Что такое реестры Docker?

Реестры контейнеров — это онлайн-система хранения и распространения именованных образов Docker. Он очень похож на менеджер пакетов, такой как NPM, поскольку он также может хранить разные версии изображений. Любой, у кого есть учетная запись реестра, может войти в систему и загрузить созданные образы, запустив docker push с параметром username/imagename :

docker push anthonyheddings/testcontainer

Затем, если вы хотите использовать этот контейнер где-то еще, вы можете загрузить его таким же образом:

docker pull anthonyheddings/testcontainer

Если вы не создаете свой образ С нуля, вы, вероятно, используете Docker Hub. Docker Hub — это реестр Docker по умолчанию.

Когда вы пишете Dockerfile для своего приложения, вы можете расширять образы из Docker Hub с помощью команды FROM :

FROM ubuntu

Для некоторых контейнеров, таких как ubuntu, они являются официальными образами Docker, что означает, что они настолько широко используются, что вам не нужно указывать имя пользователя, который их загрузил (что может быть излишним, если вы просто введите ubuntu/ubuntu).

Маркировка контейнеров

Контейнеры в реестрах Docker организованы в репозитории. Они очень похожи на концепцию репозиториев Git, за исключением того, что вместо ветвей контейнеры организованы с использованием других тегов.

Теги — это просто метки, которые обеспечивают лучший способ управления контролем версий и выпусками. Вы можете назначить их любой завершенной сборке. Вместо того, чтобы ссылаться на идентификатор сборки, вы можете пометить образ меткой в формате major.minor.patch и легко определить, какой образ какой, или любой другой формат, который предпочитает ваша организация.

Если вы не укажете тег, Docker автоматически применит «последний» тег. Всякий раз, когда вы загружаете изображение из Hub, вы, скорее всего, загружаете latest, если вы не укажете номер версии.

Вы можете использовать docker tag, чтобы вручную пометить изображения, но гораздо проще использовать -t с docker build.

 docker build -t username/image:tag .

Когда вы отправляете образ в Docker Hub или любой другой реестр, вы сможете получать разные версии в зависимости от их тега.

Альтернативы Docker Hub

По умолчанию используется Docker Hub, поэтому, если вы не укажете другой, все команды Docker, работающие с реестрами, будут добавлять hub.docker.com по умолчанию.

Однако многие облачные провайдеры предлагают свои собственные реестры Docker в качестве услуги, которая обычно интегрируется с другими предоставляемыми ими услугами, связанными с контейнерами. Например, есть Google Container Registry, который хорошо работает с Cloud Run и их сервисом Kubernetes.

Вы можете переключиться на новый реестр, просто добавляя URL-адрес реестра ко всем ссылкам на контейнеры. Для GCR это будет gcr.io:

gcr.io/anthonyheddings/test

Как и в Docker Hub, вам нужно будет войти в реестр с помощью входа в Docker.

У AWS есть Elastic Container Registry, который хорошо работает с Elastic Container Service и Elastic Kubernetes Service.

В Azure есть реестр контейнеров Azure, который работает с их службой Kubernetes.