是否可以在docker swarm服务中获取所有运行的容器id?

qacovj5a  于 2023-03-07  发布在  Docker
关注(0)|答案(3)|浏览(190)

我是新手在docker群模式,如果我想更多的细节,我的群服务,从命令行我可以运行docker服务ps“服务名称“,或从docker休息“/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
但是它没有给予我容器ID。我想从我的群服务中跟踪容器,这可能吗?

a6b3iqyw

a6b3iqyw1#

docker service ps my-ngx返回的Id是<task_id>要获取容器id,可以使用docker inspect -f "{{.Status.ContainerStatus.ContainerID}}" <task_id>

qvk1mo1f

qvk1mo1f2#

prranay的解决方案完美地工作。把它和所问的问题放在一起(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的所有容器

nnsrf1az

nnsrf1az3#

我在这里结束,因为我试图找到具有给定容器ID的节点。我敲了这个做:

#!/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)为群中每个正在运行的任务提供容器ID。

相关问题