如何基于图像过滤docker进程

如何基于图像过滤docker进程,docker,filtering,Docker,Filtering,我一直在尝试使用docker process命令获取docker实例的容器id,但是当我尝试使用filter byname时,它对我来说非常有效 sudo -S docker ps -q --filter="name=romantic_rosalind" 结果容器id: 3c7e865f1dfb 但是,当我使用image进行筛选时,我将获得所有实例容器ID: sudo -S docker ps -q --filter="image=docker-mariadb:1.0.1" 结果容器ID:

我一直在尝试使用docker process命令获取docker实例的容器id,但是当我尝试使用filter byname时,它对我来说非常有效

sudo -S docker ps -q --filter="name=romantic_rosalind"
结果容器id:

3c7e865f1dfb

但是,当我使用image进行筛选时,我将获得所有实例容器ID:

sudo -S docker ps -q  --filter="image=docker-mariadb:1.0.1"
结果容器ID:

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

3c7e865f1dfb

但我只想获得mariadb的容器id


如何使用筛选器作为映像获取docker进程的容器id?

您可以使用
awk
grep
筛选指定的容器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团队可能在最新版本中添加了它:

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

docker ps -a --filter=running | awk '{ print $1,$2 }' | grep rulsoftreg:5000/mypayroll/cisprocessing-printdocsnotifyconsumer:latest | awk '{print $1 }'
这里可以探索各种其他过滤器选项


使用命令
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 }'

请参见

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

更简单的东西:
docker ps | awk'/docker mariadb:1.0.1/{print$1}
更准确的东西:
docker ps-a | awk'$2==“docker mariadb:1.0.1”{print$1}
>}鲁本,我正在尝试这种方法,但它返回了错误的容器。你能帮忙吗?这比使用管道更合适
grepx | awk'{y}'
几乎总是写得更好
awk'/x/{y}'
——请参阅。但正确的解决方案可能是破译
--filter
文档,并找出如何让Docker为您执行此过滤。