Введение
В этом практическом занятии (лабораторной работе) вы узнаете, как управлять потоками (streams) с помощью команды docker scout stream. Потоки - это по сути коллекции образов, и понимание того, как с ними взаимодействовать, является важным для эффективной организации и управления вашими Docker-образами.
Вы начнете с изучения того, как перечислить существующие потоки, чтобы увидеть, какие коллекции образов доступны. Затем вы узнаете, как перечислить конкретные образы, содержащиеся в определенном потоке. Наконец, вы научитесь записывать образ в поток для определенной платформы, что позволит вам связывать образы с соответствующими потоками и платформами.
Перечислить существующие потоки
На этом этапе вы узнаете, как перечислить существующие потоки (streams) в Docker. Потоки по сути представляют собой репозитории или коллекции образов. Перечисление потоков позволяет вам увидеть, какие коллекции образов доступны для вас.
Сначала используем команду docker images для перечисления всех доступных образов. Эта команда показывает образы, которые в настоящее время загружены на вашу систему.
docker images
Вы должны увидеть вывод, похожий на этот, хотя конкретные образы могут отличаться в зависимости от того, какие были скачаны:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d621e9f15c2f 2 weeks ago 72.8MB
hello-world latest d2c94e258dcb 2 months ago 13.3kB
Столбец REPOSITORY в выводе представляет имя потока. Столбец TAG представляет определенную версию в рамках этого потока.
Для перечисления только уникальных имен потоков (репозиториев) можно обработать вывод команды docker images. Для этого можно использовать инструменты командной строки, такие как awk и sort.
docker images | awk '{print $1}' | sort -u
Разберем эту команду:
docker images: Эта команда перечисляет все образы.|: Это конвейер (pipe), который передает вывод команды слева в качестве входных данных команде справа.awk '{print $1}':awk- это мощный инструмент для обработки текста.{print $1}сообщаетawkраспечатать первую колонку каждой строки входных данных. В выводе командыdocker imagesпервая колонка - этоREPOSITORY.|: Еще один конвейер для передачи выводаawkвsort.sort -u:sortсортирует входные строки в алфавитном порядке.-uозначает уникальные, то есть удаляет дубликаты строк. Это дает нам список уникальных имен репозиториев, которые являются нашими потоками.
Вывод будет представлять собой список уникальных имен репозиториев, например:
REPOSITORY
hello-world
ubuntu
Эта команда эффективно перечисляет существующие потоки (репозитории), для которых на вашей системе загружены образы.
Перечислить образы определенного потока
На предыдущем этапе вы узнали, как перечислить все существующие потоки (репозитории). Теперь вы узнаете, как перечислить образы, принадлежащие определенному потоку. Это полезно, когда вы хотите увидеть разные версии (теги) определенного образа.
Для перечисления образов определенного потока можно использовать команду docker images с указанием имени потока. Например, чтобы перечислить все образы в потоке ubuntu, используйте следующую команду:
docker images ubuntu
Перед выполнением этой команды убедимся, что образ ubuntu доступен на вашей системе. Если его нет, вы можете скачать его с помощью команды docker pull.
docker pull ubuntu
Вы должны увидеть вывод, указывающий на то, что образ скачивается.
Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Теперь, когда образ ubuntu доступен, вы можете перечислить образы в потоке ubuntu:
docker images ubuntu
Вывод покажет образы, принадлежащие потоку ubuntu. Если вы скачали только тег latest, вы увидите что-то вроде этого:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d621e9f15c2f 2 weeks ago 72.8MB
Если у вас были скачаны и другие теги образа ubuntu, они также будут перечислены здесь.
Вы можете заменить ubuntu любым другим именем потока, которое вы увидели в выводе команды docker images на предыдущем этапе, чтобы перечислить образы в этом конкретном потоке. Например, чтобы перечислить образы в потоке hello-world:
docker images hello-world
Эта команда покажет вам доступные образы для потока hello-world.
Запись образа в поток для определенной платформы
На этом этапе вы узнаете, как "записать" образ в поток для определенной платформы. В терминологии Docker это обычно делается путем присвоения существующему образу нового тега (tag), который включает в себя желаемый поток и, возможно, информацию о платформе. Присвоение тега образу по сути создает новую ссылку на существующий слой образа, позволяя ссылаться на один и тот же образ с другим именем и тегом.
Базовая команда для присвоения тега образу - это docker tag. Синтаксис выглядит следующим образом:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
SOURCE_IMAGE[:TAG]: Это имя и необязательный тег существующего образа, которому вы хотите присвоить новый тег.TARGET_IMAGE[:TAG]: Это новое имя и необязательный тег, которые вы хотите присвоить образу. ЧастьTARGET_IMAGEпредставляет имя потока.
Возьмем образ ubuntu, который мы скачали на предыдущем этапе. Мы присвоим ему новый тег с именем потока, например, myubuntu.
Сначала проверим существующий образ ubuntu и его идентификатор (ID):
docker images ubuntu
Вы увидите вывод, похожий на этот, обратите внимание на IMAGE ID:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d621e9f15c2f 2 weeks ago 72.8MB
Теперь присвоим тег образу ubuntu:latest с новым именем потока myubuntu и тегом v1.0:
docker tag ubuntu:latest myubuntu:v1.0
Если команда выполнится успешно, она не выдаст много вывода. Она просто создает новый тег.
Теперь перечислим образы еще раз, чтобы увидеть новый образ с присвоенным тегом:
docker images
Теперь вы должны увидеть как исходный образ ubuntu:latest, так и новый образ myubuntu:v1.0, оба ссылающиеся на один и тот же IMAGE ID:
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu v1.0 d621e9f15c2f 2 weeks ago 72.8MB
ubuntu latest d621e9f15c2f 2 weeks ago 72.8MB
hello-world latest d2c94e258dcb 2 months ago 13.3kB
Обратите внимание, что myubuntu:v1.0 имеет тот же IMAGE ID, что и ubuntu:latest. Это подтверждает, что myubuntu:v1.0 - это просто новая ссылка на те же базовые данные образа.
Хотя команда docker tag сама по себе не обрабатывает платформы явно в процессе присвоения тега, сам образ может быть собран для определенной платформы. Когда вы скачиваете образ, Docker обычно скачивает образ для архитектуры вашей системы. Если вам нужно работать с образами для разных платформ, вы обычно используете инструменты, такие как docker buildx, чтобы собрать многоплатформенные образы или указывать платформу во время операции скачивания (например, docker pull --platform linux/amd64 ubuntu). Однако для "записи" существующего образа в поток команда docker tag является стандартным способом создания новой ссылки на этот образ в рамках другого имени потока.
Резюме
В этом практическом занятии вы узнали, как управлять потоками с помощью команды docker scout stream. Вы начали с понимания того, как перечислить существующие потоки, которые по сути являются репозиториями или коллекциями образов. Вы использовали команду docker images для просмотра всех скачанных образов, а затем обработали вывод с помощью awk и sort -u для извлечения и перечисления уникальных имен потоков (репозиториев).
Вы также узнали, как перечислить образы, принадлежащие определенному потоку, и как записать образ в поток для определенной платформы. Эти шаги демонстрируют основные операции по организации и управлению вашими Docker-образами в контексте потоков.



