如何根据图像过滤 docker 进程

How to filter docker process based on image

我一直在尝试使用 docker 进程命令获取 docker 实例的容器 ID,但是当我尝试使用 name 过滤器时对我来说很好

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

Results container id :

3c7e865f1dfb

但是当我使用 image 进行过滤时,我得到了所有实例容器 ID:

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

Results Container ids :

5570dc09b581

3c7e865f1dfb

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

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

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

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

这将打印您容器的 ID。

使用 "ancestor" 而不是 "image" 效果很好。示例:

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 , }' | grep imagename | awk '{print  }'

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

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

可以在此处探索各种其他过滤器选项

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

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

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

您也可以像这样使用 * 符号(如果需要):

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

https://docs.docker.com/engine/reference/commandline/container_ls/

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