1. Обзор
В этом уроке мы изучим концепцию тегов в Docker .
Docker поддерживает хранение образов в репозитории Docker Hub . Тег Docker обеспечивает уникальную идентификацию образа Docker. В репозитории Docker есть наборы похожих образов с разными версиями, идентифицируемыми тегами.
Здесь мы научимся помечать образ с помощью команды docker build
и docker tag
.
2. Понимание тегов Docker
Тег Docker помогает поддерживать версию сборки для отправки образа в Docker Hub . Docker Hub позволяет нам группировать изображения вместе на основе имени и тега. Несколько тегов Docker могут указывать на определенное изображение. По сути, как и в Git, теги Docker похожи на конкретный коммит. Теги Docker — это просто псевдоним для идентификатора изображения.
Имя тега должно быть строкой символов ASCII и может включать строчные и прописные буквы, цифры, символы подчеркивания, точки и тире. Кроме того, имена тегов не должны начинаться с точки или дефиса и могут содержать не более 128 символов.
3. Создайте образ с помощью тега Docker
Прежде чем мы двинемся дальше, давайте сначала создадим образец Dockerfile, чтобы продемонстрировать теги:
FROM centos:7
RUN yum -y install wget
RUN yum -y install unzip
RUN yum -y install java-1.8.0-openjdk
RUN yum clean all
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME
В приведенном выше Dockerfile мы запускаем все необходимые команды для установки java, используя «centos: 7»
в качестве базового образа.
3.1. Создайте образ с одним тегом Docker
В Docker мы можем пометить образ во время сборки. Чтобы проиллюстрировать это, давайте проверим команду для пометки изображения:
$ docker build -t foreach-java:5 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
Step 2/2 : RUN yum -y install wget
---> Using cache
---> 46ee47a7422d
Successfully built 46ee47a7422d
Successfully tagged foreach-java:5
Здесь, в приведенной выше команде, мы указали « foreach-java:5
» в качестве тега для образа Docker. Тег в Docker полезен для сохранения версии сборки для отправки образа в DockerHub. Управление версиями обычно используется для развертывания любого образа Docker или возврата к более старой версии.
Мы также можем предоставить тегу имя пользователя и имя изображения, используя следующий синтаксис:
$ docker build -t foreach/foreach-java:5 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
....
Successfully built 46ee47a7422d
Successfully tagged foreach/foreach-java:5
Здесь, в приведенной выше команде, мы предоставили имя пользователя «foreach»
с именем изображения « foreach-java
» и тегом « 5
».
3.2. Создайте образ с несколькими тегами Docker
В Docker мы также можем присвоить изображению несколько тегов. Здесь мы будем использовать команду сборки docker
для назначения нескольких тегов изображению с помощью одной команды.
Чтобы продемонстрировать, давайте проверим команду для вышеуказанного Dockerfile:
$ docker build -t foreach-java:5 -t foreach-java:6 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
....
Successfully built 46ee47a7422d
Successfully tagged foreach-java:5
Successfully tagged foreach-java:6
Здесь мы видим, что 2 тега «foreach-java:5»
и «foreach-java:6»
созданы для imageId
« 46ee47a7422d
».
3.3. Создайте изображение без каких-либо тегов
Мы также можем создать образ Docker без использования тега. Но чтобы отслеживать изображение, мы всегда должны предоставлять тег с именем изображения. Давайте рассмотрим команду для создания образа без тега:
$ docker build -t foreach-java .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
...
Successfully built 46ee47a7422d
Successfully tagged foreach-java:latest
Здесь, в приведенной выше команде, мы создали образ без какого-либо тега, поэтому по умолчанию Docker предоставляет тег для образа как последний « foreach-java:latest»
.
Docker всегда указывает на последнюю стабильную версию, используя последний тег. Старые релизы можно даже назвать последними. Но мы не можем предсказать, будет ли это основная или второстепенная версия.
4. Пометьте изображение с помощью команды docker tag
До сих пор мы обсуждали пометку образа с помощью команды сборки docker
. Но мы также можем явно пометить изображение с помощью команды docker tag
. Пометка изображения просто создает псевдоним для имени изображения или imageId
. Здесь мы рассмотрим оба способа пометки изображения.
Общий формат имени образа Docker выглядит следующим образом:
<user-name>/<image-name>:<tag-name>
В приведенном выше фрагменте компонент после двоеточия указывает на тег, прикрепленный к изображению.
Давайте посмотрим на команду, чтобы пометить изображение, используя имя изображения:
$ docker tag foreach-java:6 foreach-java:8
Команда пометить изображение с помощью imageId
выглядит следующим образом:
$ docker tag 46ee47a7422d foreach-java:9
Давайте проверим все изображения, созданные на данный момент:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
foreach-java 5 46ee47a7422d 13 minutes ago 370MB
foreach-java 6 46ee47a7422d 13 minutes ago 370MB
foreach-java 8 46ee47a7422d 13 minutes ago 370MB
foreach-java 9 46ee47a7422d 13 minutes ago 370MB
foreach-java latest 46ee47a7422d 13 minutes ago 370MB
centos 7 eeb6ee3f44bd 7 months ago 204MB
Здесь мы найдем все изображения, созданные на данный момент.
5. Использование тега в команде docker pull
Теги Docker полезны при создании образа или извлечении образа из репозитория Docker Hub.
В нашем Dockerfile мы использовали команду FROM centos:7.
Это потянет версию « 7»
общедоступного образа Centos .
Мы также можем вытащить изображение с тегом или без него.
Давайте рассмотрим команду с определенным тегом:
$ docker pull centos:7
Команда docker pull
без тега:
$ docker pull centos
Приведенная выше команда извлечет образ «centos:latest»
из общедоступного репозитория Docker Hub. Мы также можем применить несколько тегов к изображению, обычно для указания основной и дополнительной версии.
6. Заключение
В этой статье мы научились создавать теги в Docker и управлять ими. Мы изучили различные способы пометить изображение.
С помощью команды сборки docker
мы сначала пометили образ. Позже мы рассмотрели команду docker tag
. Кроме того, мы изучили команду docker pull
с использованием тегов.