Как использовать команду docker scout watch для мониторинга контейнерных образов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как эффективно использовать команду docker scout watch для мониторинга контейнерных образов. Вы рассмотрите различные сценарии, начиная с отслеживания определенного репозитория на предмет новых образов, а затем уточните мониторинг, фильтруя по тегам. Вы также узнаете, как расширить отслеживание на все репозитории в реестре и, наконец, как запустить отслеживание, включающее все существующие образы в репозитории. С помощью практических упражнений вы получите практический опыт настройки и управления мониторингом образов с использованием Docker Scout.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/push("Push Image to Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/search("Search Images in Repository") subgraph Lab Skills docker/pull -.-> lab-555218{{"Как использовать команду docker scout watch для мониторинга контейнерных образов"}} docker/tag -.-> lab-555218{{"Как использовать команду docker scout watch для мониторинга контейнерных образов"}} docker/push -.-> lab-555218{{"Как использовать команду docker scout watch для мониторинга контейнерных образов"}} docker/images -.-> lab-555218{{"Как использовать команду docker scout watch для мониторинга контейнерных образов"}} docker/search -.-> lab-555218{{"Как использовать команду docker scout watch для мониторинга контейнерных образов"}} end

Отслеживание определенного репозитория на предмет новых образов

На этом этапе вы узнаете, как отслеживать определенный Docker-репозиторий на предмет новых образов с помощью команды docker pull. Это фундаментальная операция в Docker, которая позволяет вам загружать образы из реестра на локальную машину.

Сначала давайте загрузим определенный образ из реестра Docker Hub. Мы будем использовать образ hello-world, который является очень небольшим образом, используемым для тестирования установки Docker.

docker pull hello-world

Вы должны увидеть вывод, указывающий, что образ загружается.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Эта команда сообщает Docker загрузить образ hello-world с тегом latest из стандартного реестра (Docker Hub). Если образ уже существует локально, Docker проверит, доступна ли новая версия, и загрузит ее при необходимости.

Далее, давайте выведем список образов, которые есть на вашей локальной машине, чтобы убедиться, что образ hello-world был загружен.

docker images

Вы должны увидеть hello-world в выводе.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ...            ...

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

Теперь давайте попробуем загрузить тот же образ еще раз. Поскольку у вас уже есть последняя версия hello-world, Docker не загрузит его снова.

docker pull hello-world

Вывод будет указывать, что образ обновлен.

Using default tag: latest
latest: Pulling from library/hello-world
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest

Это демонстрирует, как docker pull проверяет наличие новых версий перед загрузкой.

Отслеживание определенного репозитория и фильтрация по тегу

На этом этапе вы узнаете, как отслеживать определенный Docker-репозиторий и фильтровать по тегу при загрузке образов. Docker-образы часто имеют разные версии или варианты, идентифицируемые тегами. Указание тега позволяет вам загрузить определенную версию образа.

На предыдущем этапе мы загрузили образ hello-world с стандартным тегом latest. Теперь давайте загрузим другой образ, например, образ ubuntu, и укажем определенный тег. Мы загрузим образ с тегом 20.04, который соответствует выпуску Ubuntu 20.04 LTS.

docker pull ubuntu:20.04

Вы увидите вывод, показывающий прогресс загрузки указанного тега образа Ubuntu.

20.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

Эта команда сообщает Docker загрузить образ ubuntu именно с тегом 20.04. Если вы не укажете тег, Docker по умолчанию использует latest.

Теперь давайте снова выведем список локальных образов, чтобы увидеть только что загруженный образ ubuntu:20.04.

docker images

Теперь в списке должны быть как hello-world:latest, так и ubuntu:20.04.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ...            ...
ubuntu        20.04     ...            ...            ...

Это показывает, что вы успешно загрузили определенную версию образа ubuntu, указав его тег.

Вы также можете загрузить другие теги того же образа. Например, давайте загрузим образ ubuntu с тегом 18.04.

docker pull ubuntu:18.04

Снова вы увидите прогресс загрузки.

18.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

При повторном выводе списка образов вы увидите все три загруженных образа.

docker images

Теперь в выводе будет также ubuntu:18.04.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ...            ...
ubuntu        20.04     ...            ...            ...
ubuntu        18.04     ...            ...            ...

Это демонстрирует, как вы можете использовать теги для управления разными версиями одного и того же образа на своей локальной машине.

Отслеживание всех репозиториев в реестре

На этом этапе вы узнаете, как выводить список репозиториев в Docker-реестре. В то время как команда docker pull используется для загрузки отдельных образов, нет одной команды, которая бы позволяла "отслеживать" или вывести список всех репозиториев в общедоступном реестре, таком как Docker Hub, непосредственно из Docker CLI из-за огромного количества репозиториев. Однако вы можете искать репозитории по ключевым словам.

Команда docker search позволяет искать образы в реестре Docker Hub. Давайте поищем образы, связанные с "nginx".

docker search nginx

Вы увидите список репозиториев, соответствующих поисковому запросу "nginx".

NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        16000     [OK]
...

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

Вы также можете фильтровать результаты поиска. Например, чтобы увидеть только официальные образы, связанные с "ubuntu", вы можете использовать флаг --filter.

docker search --filter is-official=true ubuntu

Эта команда покажет вам только официальные репозитории Ubuntu.

NAME      DESCRIPTION                STARS     OFFICIAL   AUTOMATED
ubuntu    Ubuntu is a Debian-based...   14000     [OK]

Хотя команда docker search не выводит список всех репозиториев, это основной способ обнаружения образов в реестре с помощью Docker CLI. Чтобы получить полный список репозиториев в большом общедоступном реестре, таком как Docker Hub, обычно нужно использовать API реестра или веб-интерфейс.

В рамках этого лабораторного занятия понимание того, как искать и обнаруживать образы, является ключом к поиску репозиториев, которые вы хотите "отслеживать" или из которых хотите загружать образы.

Отслеживание репозитория и отправка всех существующих образов

На этом этапе вы узнаете, как пометить существующий образ и отправить его в Docker-реестр. Отправка образов позволяет вам делиться собственными настраиваемыми образами или модифицированными версиями существующих образов с другими пользователями или хранить их в удаленном месте.

Перед тем как отправить образ, вам нужно пометить его адресом реестра, вашим именем пользователя и именем репозитория. Мы будем использовать образ ubuntu:20.04, который вы загрузили на предыдущем этапе. Давайте пометим его для отправки в Docker Hub. Замените your_docker_username на свое реальное имя пользователя в Docker Hub.

docker tag ubuntu:20.04 your_docker_username/ubuntu:20.04

Эта команда создает новый тег для образа ubuntu:20.04. Новый тег - your_docker_username/ubuntu:20.04. Формат: [registry]/[username]/[repository]:[tag]. Если вы отправляете образ в Docker Hub, можно опустить часть с адресом реестра (docker.io/).

Теперь выведите список локальных образов еще раз, чтобы увидеть новый тег.

docker images

Вы должны увидеть запись с your_docker_username/ubuntu в качестве репозитория и 20.04 в качестве тега, имеющую тот же идентификатор образа, что и исходный образ ubuntu:20.04.

REPOSITORY                     TAG       IMAGE ID       CREATED        SIZE
hello-world                    latest    ...            ...            ...
ubuntu                         20.04     ...            ...            ...
ubuntu                         18.04     ...            ...            ...
your_docker_username/ubuntu    20.04     ...            ...            ...

Теперь, когда образ помечен правильно, вы можете отправить его в свой репозиторий на Docker Hub. Примечание: Вам нужно войти в учетную запись Docker Hub, чтобы отправлять образы. Если вы не вошли в систему, команда docker push завершится с ошибкой. В рамках этого лабораторного занятия мы продемонстрируем команду, но вам не обязательно успешно отправлять образ, если у вас нет учетной записи в Docker Hub или вы не вошли в систему.

docker push your_docker_username/ubuntu:20.04

Если вы вошли в систему, вы увидите вывод, показывающий, как слои образа отправляются в реестр. Если вы не вошли в систему, вы получите ошибку аутентификации.

The push refers to repository [docker.io/your_docker_username/ubuntu]
...

Эта команда загружает образ с указанным тегом в ваш репозиторий на Docker Hub.

Хотя вы не можете "отслеживать" репозиторий и автоматически отправить все существующие образы одной командой, вы можете достичь этого, написав скрипт с командами docker tag и docker push для образов, которые вы хотите отправить.

Резюме

В этом лабораторном занятии вы изучили основную команду docker pull для загрузки контейнерных образов из реестра. В частности, вы узнали, как загрузить определенный образ, например hello-world, и проверить его наличие с помощью команды docker images. Вы также увидели, как Docker эффективно обрабатывает последующие запросы на загрузку одного и того же образа, загружая его только в случае, если доступна новая версия.