Как использовать команду docker service ps для вывода списка задач сервиса

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь эффективно использовать команду docker service ps для проверки и управления задачами в рамках сервиса Docker Swarm. Вы начнете с вывода базовой информации о задачах, связанных с сервисом, и поймете ключевые детали, предоставленные в стандартном выводе.

На основе базового вывода списка задач вы затем узнаете, как получить полные сведения о задачах сервиса с помощью флага --no-trunc для получения всесторонней информации. В рамках практического занятия также будет показано, как фильтровать задачи по различным критериям, таким как имя, узел, на котором они запущены, и желаемое состояние, что позволит вам найти конкретные задачи. Наконец, вы научитесь форматировать вывод команды docker service ps для настройки отображаемой информации в соответствии с вашими потребностями.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ps -.-> lab-555228{{"Как использовать команду docker service ps для вывода списка задач сервиса"}} docker/rm -.-> lab-555228{{"Как использовать команду docker service ps для вывода списка задач сервиса"}} docker/create -.-> lab-555228{{"Как использовать команду docker service ps для вывода списка задач сервиса"}} end

Вывод списка задач сервиса

На этом этапе вы научитесь выводить список задач, связанных с определенным сервисом в Docker Swarm. Задачи (tasks) являются основными единицами планирования в Swarm и представляют запущенный экземпляр сервиса.

Сначала убедимся, что у вас запущен сервис. Мы создадим простой сервис с использованием образа nginx.

docker service create --name my-nginx nginx

Эта команда создает сервис с именем my-nginx с использованием образа nginx. Docker Swarm автоматически создаст и управляет задачами для этого сервиса.

Теперь, чтобы вывести список задач для сервиса my-nginx, вы можете использовать команду docker service ps, за которой следует имя сервиса.

docker service ps my-nginx

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

ID             NAME         IMAGE          NODE         DESIRED STATE   CURRENT STATE           ERROR   PORTS
<task_id>      my-nginx.1   nginx:latest   <node_name>   Running         Running 5 seconds ago

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

Вывод списка задач с полной информацией

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

Для получения полной информации о задачах вы можете использовать флаг --no-trunc с командой docker service ps. Этот флаг предотвращает сокращение вывода Docker, показывая полные идентификаторы и другую информацию.

Выведем список задач для сервиса my-nginx с полной информацией:

docker service ps --no-trunc my-nginx

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

ID                                                           NAME         IMAGE          NODE         DESIRED STATE   CURRENT STATE            ERROR   PORTS
<full_task_id>                                               my-nginx.1   nginx:latest   <node_name>   Running         Running 10 seconds ago

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

Фильтрация задач по имени или узлу

В крупном кластере Swarm может быть множество задач, запущенных на нескольких узлах. Чтобы найти определенные задачи, вы можете фильтровать вывод команды docker service ps по различным критериям, таким как имя задачи или узел, на котором она запущена.

Для фильтрации используется флаг --filter. Базовый синтаксис: --filter "key=value".

Для фильтрации задач по имени можно использовать ключ name. Например, чтобы найти задачи с именем, начинающимся с my-nginx, можно использовать следующую команду:

docker service ps --filter "name=my-nginx.1" my-nginx

Эта команда покажет только задачу с именем my-nginx.1 для сервиса my-nginx. Обратите внимание, что имена задач обычно имеют формат service_name.task_number.

Для фильтрации задач по узлу, на котором они запущены, можно использовать ключ node. Сначала вам нужно знать имя узла, на котором запущена ваша задача. Вы можете получить это из вывода команды docker service ps. Предположим, что имя вашего узла - labex-node.

docker service ps --filter "node=labex-node" my-nginx

Эта команда отобразит задачи для сервиса my-nginx, запущенные на узле с именем labex-node. Замените labex-node на фактическое имя вашего узла, если оно отличается.

Вы можете комбинировать фильтры, используя несколько флагов --filter.

Фильтрация задач по желаемому состоянию

В дополнение к фильтрации по имени или узлу, вы также можете фильтровать задачи на основе их желаемого состояния. Желаемое состояние указывает, в каком состоянии менеджер Swarm хочет, чтобы находилась задача (например, Running (запущена), Shutdown (остановлена), Rejected (отклонена)).

Для фильтрации задач по желаемому состоянию используйте флаг --filter с ключом desired-state.

Например, чтобы вывести только те задачи, которые в настоящее время должны быть в состоянии Running для сервиса my-nginx, вы можете использовать следующую команду:

docker service ps --filter "desired-state=running" my-nginx

Поскольку наш сервис my-nginx запущен, эта команда покажет активные задачи.

Если вы хотите увидеть задачи, которые были остановлены, вы можете использовать следующую команду:

docker service ps --filter "desired-state=shutdown" my-nginx

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

Вы также можете отфильтровать задачи, которые были Rejected (отклонены). Это состояние означает, что менеджер Swarm не смог запустить задачу.

docker service ps --filter "desired-state=rejected" my-nginx

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

Форматирование вывода задач сервиса

В этом последнем шаге вы узнаете, как настроить формат вывода команды docker service ps. Это полезно, когда вы хотите извлечь определенную информацию или интегрировать вывод с другими инструментами.

Флаг --format позволяет вам указать шаблон на языке Go для форматирования вывода. Вы можете использовать заполнители, такие как .ID, .Name, .Image, .Node, .DesiredState, .CurrentState, .Error и .Ports, чтобы отобразить соответствующие атрибуты задачи.

Например, чтобы отобразить только идентификатор задачи, имя и образ в табличном формате, вы можете использовать следующую команду:

docker service ps --format "table {{.ID}}\t{{.Name}}\t{{.Image}}" my-nginx

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

ID             NAME         IMAGE
<task_id>      my-nginx.1   nginx:latest

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

docker service ps --format "{{.ID}}" my-nginx

Эта команда выведет только идентификатор(ы) задачи.

Попробуем другой формат, отобразив имя задачи и узел, на котором она запущена:

docker service ps --format "Task: {{.Name}} is running on node: {{.Node}}" my-nginx

Вывод будет выглядеть следующим образом:

Task: my-nginx.1 is running on node: <node_name>

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

Наконец, очистим созданный нами сервис:

docker service rm my-nginx

Эта команда удаляет сервис my-nginx и связанные с ним задачи.

Резюме

В этом практическом занятии вы узнали, как использовать команду docker service ps для вывода списка задач, связанных с сервисом Docker Swarm. Вы начали с создания простого сервиса nginx, а затем использовали команду docker service ps <service_name> для просмотра его задач, изучив основные столбцы вывода, такие как ID, Имя, Образ, Узел, Желаемое состояние и Текущее состояние.

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