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



