Как использовать команду docker stack ls для вывода списка стэков

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

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

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как использовать команду docker stack ls для вывода списка Docker-стэков (Docker stacks). Мы начнем с установки Docker Compose, которая необходима для определения и развертывания много-контейнерных приложений в виде стэков. Затем вы развернете простой стэк веб-сервиса с использованием файла docker-compose.yml, чтобы иметь стэк для вывода в списке.

После развертывания вы изучите различные способы вывода списка стэков с помощью команды docker stack ls. Это включает вывод списка всех запущенных стэков, вывод списка стэков с пользовательским форматом вывода для отображения определенной информации и вывод списка стэков в формате JSON для программной обработки.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") subgraph Lab Skills docker/ls -.-> lab-555235{{"Как использовать команду docker stack ls для вывода списка стэков"}} end

Вывод списка всех стэков

На этом этапе вы узнаете, как вывести список всех Docker-стэков (Docker stacks), запущенных в вашей системе. Docker-стэк представляет собой набор сервисов, развернутых вместе. Прежде чем мы сможем вывести список стэков, нам нужно установить Docker Compose, которая используется для определения и запуска много-контейнерных Docker-приложений.

Сначала установим Docker Compose. Мы загрузим бинарный файл Docker Compose и сделаем его исполняемым.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Первая команда загружает бинарный файл Docker Compose из официального репозитория на GitHub. $(uname -s) и $(uname -m) используются для получения операционной системы и архитектуры вашего компьютера, чтобы убедиться, что вы загружаете правильный бинарный файл. Вторая команда делает загруженный файл исполняемым.

Теперь, когда Docker Compose установлена, проверим установку, проверив версию.

docker-compose --version

В выводе вы должны увидеть установленную версию Docker Compose.

Для демонстрации вывода списка стэков нам нужно развернуть простой стэк. Мы создадим файл docker-compose.yml, который определяет простой веб-сервис.

nano ~/project/docker-compose.yml

Вставьте следующее содержимое в файл docker-compose.yml:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Этот файл docker-compose.yml определяет один сервис с именем web, который использует образ nginx:latest и сопоставляет порт 80 на хосте с портом 80 в контейнере.

Теперь развернем этот стэк с помощью команды docker stack deploy. Мы назовем наш стэк mywebstack.

docker stack deploy -c ~/project/docker-compose.yml mywebstack

Флаг -c указывает на используемый файл Compose, а mywebstack - это имя, которое мы даем нашему стэку. Вы увидите вывод, указывающий на то, что сервисы создаются и развертываются.

После развертывания стэка вы можете вывести список всех запущенных стэков с помощью команды docker stack ls.

docker stack ls

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

Вывод списка стэков с пользовательским форматом

На предыдущем этапе вы узнали, как выводить список всех развернутых Docker-стэков (Docker stacks) с использованием формата вывода по умолчанию. На этом этапе вы узнаете, как настроить формат вывода команды docker stack ls так, чтобы отображались только нужные вам данные.

Команда docker stack ls поддерживает флаг --format, который позволяет указать шаблон на языке Go для форматирования вывода. Это полезно, когда вы хотите извлечь определенную информацию или интегрировать вывод с другими инструментами.

Начнем с вывода имен стэков и количества сервисов в каждом стэке. Для этого можно использовать поля шаблона {{.Name}} и {{.Services}}.

docker stack ls --format "{{.Name}}: {{.Services}}"

В этой команде --format "{{.Name}}: {{.Services}}" сообщает Docker вывести имя каждого стэка, за которым следует двоеточие, а затем количество сервисов. {{.Name}} и {{.Services}} - это заполнители, которые будут заменены на фактические значения для каждого стэка.

Вы должны увидеть вывод, похожий на mywebstack: 1, который указывает имя стэка и количество содержащихся в нем сервисов.

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

docker stack ls --format "Stack Name: {{.Name}}, Desired Replicas: {{.Desired}}"

Здесь мы используем поле {{.Desired}} для отображения желаемого количества реплик сервисов в стэке.

Флаг --format очень гибок и позволяет комбинировать разные поля и добавлять пользовательский текст. Список доступных полей можно найти в документации Docker для команды docker stack ls.

Попробуем еще один пример - выведем имя стэка и текущее количество реплик.

docker stack ls --format "Stack: {{.Name}}, Current Replicas: {{.Current}}"

В этой команде используется поле {{.Current}} для отображения текущего количества запущенных реплик сервисов в стэке.

Использование флага --format позволяет адаптировать вывод команды docker stack ls под ваши конкретные нужды, что упрощает обработку и анализ информации о развернутых стэках.

Вывод списка стэков в формате JSON

На предыдущих этапах вы узнали, как выводить список Docker-стэков (Docker stacks) с использованием форматов по умолчанию и пользовательских форматов. На этом этапе вы узнаете, как выводить список Docker-стэков в формате JSON. Это особенно полезно, когда вам нужно программно разобрать вывод или интегрировать его с другими системами.

Команда docker stack ls, как и многие другие команды Docker, поддерживает опцию --format json для вывода результатов в виде массива JSON.

Выведем список развернутых стэков в формате JSON.

docker stack ls --format json

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

Вывод будет выглядеть приблизительно так (точное содержимое будет зависеть от развернутых вами стэков):

[
  {
    "Name": "mywebstack",
    "Services": "1",
    "Desired": "1",
    "Current": "1"
  }
]

Этот вывод в формате JSON имеет структуру и легко разбирается с использованием скриптовых языков или других инструментов. Например, вы можете использовать инструмент jq для извлечения определенных полей из вывода JSON.

Установим jq - легкий и гибкий командный JSON-процессор.

sudo apt-get update
sudo apt-get install -y jq

Теперь, когда jq установлен, используем его для извлечения только имен развернутых стэков из вывода JSON.

docker stack ls --format json | jq '.[].Name'

В этой команде мы передаем вывод в формате JSON команды docker stack ls --format json в jq. '.[].Name' - это фильтр jq, который выбирает поле Name из каждого объекта в массиве JSON.

В выводе вы должны увидеть имя развернутого вами стэка, mywebstack.

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

Резюме

В этом практическом занятии (lab) вы узнали, как использовать команду docker stack ls для вывода списка Docker-стэков (Docker stacks). В начале занятия вас научили устанавливать Docker Compose, который является обязательным компонентом для работы с Docker-стэками, и проверять его установку. Затем вы создали простой файл docker-compose.yml, в котором определен базовый веб-сервис, и развернули его в виде стэка с именем mywebstack с помощью команды docker stack deploy.

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