Как использовать команду docker scout stream для управления потоками

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

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

Введение

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

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


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/images("List Images") subgraph Lab Skills docker/pull -.-> lab-555216{{"Как использовать команду docker scout stream для управления потоками"}} docker/tag -.-> lab-555216{{"Как использовать команду docker scout stream для управления потоками"}} docker/images -.-> lab-555216{{"Как использовать команду docker scout stream для управления потоками"}} end

Перечисление существующих потоков

На этом этапе вы узнаете, как перечислить существующие потоки (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-образами в контексте потоков.