Как работают теги Docker? — CloudSavvy IT

Логотип докера.

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

Контейнер против изображения

Прежде чем говорить о тегах, важно понять разницу между контейнерами и изображениями, поскольку они часто используются взаимозаменяемо, что может привести к путанице.

Образ Docker — это то, что вы получаете от запуска docker build с вашим Dockerfile. Он состоит из нескольких слоев для оптимизации использования диска и памяти. Изображение доступно только для чтения.

Контейнер Docker — это экземпляр изображения, в котором на самом деле выполняются процессы. Это файловая система для чтения / записи, поэтому, по сути, изображение — это шаблон, из которого вы создаете несколько контейнеров. Он содержит базовый код и все, что нужно приложению для начала работы. Контейнеры инициализируются с образом при создании, затем он может изменять файловую систему, как им будет угодно.

Изображения — это то, что вы нажимаете в реестре контейнера. Затем на ваших серверах вы можете сослаться на изображение в реестре, чтобы загрузить контейнер.

Теги Отслеживание версий встроенных изображений

Всякий раз, когда вы запускаете docker buildВы создаете новое изображение с уникальным идентификатором, например, «38054d5e8a27».

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

Пометка довольно проста. Ты можешь использовать docker tag сделать это после факта, но это гораздо проще сделать, когда вы строите с использованием -t флаг:

 docker build -t repository/image:tag .

Это создаст изображение из Dockerfile и пометит его тегом, который вы указали. Тег является [:TAG] часть, после точки с запятой, хотя Докер скажет:Successfully tagged repository/image:tag«. repository/image part — это просто имя изображения, и если вы планируете отправить его в репозиторий, вы должны пометить его в repository/image:tag формат.

Для Docker Hub имя репозитория — это просто ваше имя пользователя, поэтому команда будет выглядеть примерно так:

 docker build -t anthonyheddings/nginx:tag .

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

Другая распространенная практика — помечать изображение идентификатором git commit, тем самым связывая управление версиями со встроенными изображениями. Вы можете автоматизировать это довольно легко с git rev-parse:

docker build -t vicerust/core:$(git rev-parse --verify HEAD) .

После того, как изображение помечено, вы можете отправить его в реестр с помощью docker pushпроходя в repository/image название:

docker push repository/image

Оттуда вы можете получить к нему доступ в docker run как обычно. Если вы не укажете тег, docker run автоматически использует latest,

Последнее не всегда означает «последнее»

"Latest" тег немного сбивает с толку. Несмотря на то, как звучит название, оно не всегда указывает на последний выпуск. Это просто специальный тег, который присваивается автоматически, когда вы не указываете тег. Это позволяет полностью избежать тегов и просто нажать «последнюю» версию.

Вы можете использовать последний тег, просто не указав определенный тег:

 docker build -t repository/image .

Или вручную пометив изображение как latest:

 docker build -t repository/image:latest .

который работает хорошо, если вы используете только последний тег. Но если вы также хотите использовать теги идентификатора версии, вам нужно каждый раз ставить двойные теги на свои изображения, что может привести к тому, что «последний» не всегда означает последнее построенное изображение. Это хорошая практика, чтобы избежать использования latest наряду с другими тегами, чтобы предотвратить эту путаницу. Просто делайте версии тегов каждый раз, либо с помощью номеров патчей вручную, либо с помощью идентификаторов коммитов git.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.