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

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

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

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/ls -.-> lab-555204{{"Как использовать команду docker scout environment для управления окружениями"}} docker/pull -.-> lab-555204{{"Как использовать команду docker scout environment для управления окружениями"}} docker/images -.-> lab-555204{{"Как использовать команду docker scout environment для управления окружениями"}} end

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

На этом этапе мы узнаем, как перечислить существующие окружения Docker в вашей системе. Окружения Docker позволяют управлять различными установками или контекстами Docker. По умолчанию у вас будет окружение default.

Для перечисления существующих окружений Docker вы можете использовать команду docker context ls. Эта команда отображает таблицу с информацией о каждом окружении, включая его имя, описание, конечную точку Docker (Docker endpoint) и то, является ли оно текущим активным окружением.

Выполним команду, чтобы увидеть доступные окружения. Откройте терминал в директории ~/project.

docker context ls

Вы должны увидеть вывод, похожий на следующий:

NAME        DESCRIPTION                               DOCKER ENDPOINT                  KUBERNETES ENDPOINT   ORCHESTRATOR
default *   Current DOCKER_HOST environment           unix:///var/run/docker.sock      n/a                   swarm

В этом выводе NAME - это имя окружения, DESCRIPTION - краткое описание, DOCKER ENDPOINT показывает конечную точку, которую использует Docker (в данном случае - стандартный Unix-сокет), KUBERNETES ENDPOINT предназначен для интеграции с Kubernetes (здесь не применяется), а ORCHESTRATOR указывает на оркестратор, который используется (в данном случае - swarm). Звездочка (*) рядом с default означает, что это текущее активное окружение.

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

Перечисление образов, связанных с определенным окружением

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

Для перечисления образов в текущем активном окружении (которым является default, как мы видели на предыдущем этапе), вы можете использовать команду docker images. Эта команда отображает список образов с указанием их репозитория, тега, идентификатора образа (image ID), времени создания и размера.

Перед перечислением образов давайте загрузим образ-пример, чтобы в списке было что-то видеть. Мы загрузим образ 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

Теперь, когда у нас есть образ, давайте перечислим образы в окружении default с помощью команды docker images.

docker images

Вы должны увидеть вывод, похожий на следующий, включая только что загруженный образ hello-world:

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

Вывод показывает образ hello-world с тегом latest, его уникальный IMAGE ID, время его создания (CREATED) и размер (SIZE).

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

Запись образа в окружение для определенной платформы

На этом этапе мы рассмотрим, как Docker обрабатывает образы для различных платформ и как можно взаимодействовать с ними. Хотя явно "записать" образ в окружение для определенной платформы не является стандартной командой Docker, как вы могли бы предположить. Docker-образы часто являются многоархитектурными, то есть один тег образа может содержать варианты для разных архитектур процессоров (например, amd64, arm64 и т.д.). Когда вы загружаете образ, Docker автоматически выбирает правильный вариант для архитектуры вашей системы.

Концепция "записи" образа в окружение для определенной платформы больше связана с обеспечением доступности или использования правильного варианта образа. Хотя вы не явно "записываете" его, вы можете загружать образы, указывая целевую платформу.

Демонстрируем загрузку образа для определенной платформы. Мы загрузим образ alpine, который представляет собой легковесное дистрибутив Linux, и укажем платформу arm64. Несмотря на то, что наша виртуальная машина LabEx, вероятно, имеет архитектуру amd64, Docker все еще может загружать и хранить образы для других архитектур.

Сначала загрузим образ alpine без указания платформы, чтобы увидеть поведение по умолчанию.

docker pull alpine

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

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

Теперь перечислим образы еще раз, чтобы увидеть образ alpine.

docker images

Вы увидите alpine в списке.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ... ago      ...kB
alpine        latest    ...            ... ago      ...MB

Теперь попробуем загрузить образ alpine специально для платформы arm64, используя флаг --platform.

docker pull --platform arm64 alpine

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

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

Несмотря на то, что вывод может выглядеть похожим, Docker загрузил вариант для arm64. Если бы вы находились на машине с архитектурой arm64, это был бы вариант по умолчанию. На машине с архитектурой amd64 у вас теперь локально хранятся как вариант amd64 (загруженный по умолчанию), так и вариант arm64 образа alpine:latest.

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

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

Резюме

В этом практическом занятии мы узнали, как управлять Docker-окружениями с помощью команды docker scout environment. Мы начали с перечисления существующих Docker-окружений на нашей системе с использованием команды docker context ls, которая показала нам окружение по умолчанию и его детали.

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