Возможно ли получить все идентификаторы запущенных контейнеров в сервисах Docker Swarm?

Я новичок в режиме роя Docker. Если я хочу получить более подробную информацию о моем сервисе роя, из командной строки я могу запустить Docker Service PS "имя службы" или из Docker rest "/v2/services/my-ngx"

[msreddy@swarmnode1 ~]$ docker service ps my-ngx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS voj7fllhnmqb my-ngx.1 nginx:latest swarmnode1 Running Running 26 minutes ago

но он не дал мне идентификатор контейнера. Я хочу отслеживать контейнеры из моей службы роя это возможно?

3 ответа

Решение

Идентификатор вернулся docker service ps my-ngx это <task_id>Чтобы получить идентификатор контейнера, вы можете использовать docker inspect -f "{{.Status.ContainerStatus.ContainerID}}" <task_id>

Раствор прранай работает отлично. Чтобы поставить это вместе с заданным вопросом (bash):

for f in $(docker service ps -q my-ngx -f desired-state=running);do docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' $f; done

В этом списке перечислены все контейнеры упомянутого сервиса my-ngx

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

      #!/bin/sh
docker node ps $(docker node ls -q) -f desired-state=running | sort -u | while read -r taskid widge taskname image host rem ; do echo "$taskid   $taskname   $image   $host   `docker inspect -f \"{{.Status.ContainerStatus.ContainerID}}\" $taskid 2>/dev/null`"; done | grep $1

Это медленно, но (без grep) дает идентификатор контейнера для каждой запущенной задачи в рое.

Другие вопросы по тегам