如何根据图像过滤docker进程

时间:2015-04-02 06:58:55

标签: docker filtering

我一直在尝试使用docker process命令获取docker实例的容器ID,但是当我尝试使用 name 过滤器时,它可以精细

sudo -S docker ps -q --filter="name=romantic_rosalind"
  

结果容器ID:

     

3c7e865f1dfb

但是,当我使用图片进行过滤时,我会获取所有实例容器ID:

sudo -S docker ps -q  --filter="image=docker-mariadb:1.0.1"
  

结果容器ID:

     

5570dc09b581

     

3c7e865f1dfb

但我希望只获得mariadb的容器ID。

如何使用过滤器作为图像获取泊坞窗进程的容器ID?

5 个答案:

答案 0 :(得分:71)

使用"祖先"而不是"图像"这很棒。例如:

sudo -S docker ps -q  --filter ancestor=docker-mariadb:1.0.1

Docker团队可能已在最新版本中添加了它: http://docs.docker.com/engine/reference/commandline/ps/

答案 1 :(得分:31)

您可以使用awkgrep来过滤指定的容器ID。 例如:

docker ps | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'

这将打印容器的ID。

答案 2 :(得分:2)

使用命令docker container ls列出容器(替代docker ps)解决方案将是:

docker container ls | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'

您也可以使用*符号(如果需要),如下所示:

docker container ls | grep "docker-mariadb:*" | awk '{ print $1 }'

请参阅https://docs.docker.com/engine/reference/commandline/container_ls/

答案 3 :(得分:0)

docker ps -a | awk '{ print $1,$2 }' | grep imagename | awk '{print $1 }'

这很完美。如果需要,可以单独添加一个特定stsatus运行图像的过滤器,如下所示

docker ps -a --filter=running | awk '{ print $1,$2 }' | grep rulsoftreg:5000/mypayroll/cisprocessing-printdocsnotifyconsumer:latest | awk '{print $1 }'

可以在这里探索各种其他过滤器选项

https://docs.docker.com/v1.11/engine/reference/commandline/ps/

答案 4 :(得分:0)

命令示例>>> docker容器ls -af'name = mysql'--format'{{.ID}}'