如何过滤基于图像的docker进程

我一直在尝试使用docker process命令获取docker实例的容器ID,但是当我尝试使用名称筛选器时,它对我来说工作正常

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

结果容器ID:

3c7e865f1dfb

但是当我使用图像过滤我得到所有的实例容器标识符:

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

结果容器ID:

5570dc09b581

3c7e865f1dfb

但是我只想得到mariadb的容器id。

如何使用filter获取docker进程的容器ID作为图像?

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

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

这将打印您的容器的ID。

使用“祖先”,而不是“伟大的图像”。 例:

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

Docker团队可能已经将其添加到最新版本中: http : //docs.docker.com/engine/reference/commandline/ps/

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

太棒了。 如果你需要的话,你可以单独添加一个特定stsatus的运行图像的filter,如下所示

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

这里可以探索各种其他的filter选项

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