How to filter docker process based on image

2019-02-05 13:11发布

问题:

I have been trying to get the container id of docker instance using docker process command, but when i'm trying with filter by name it works fine for me.

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

Results container id :

3c7e865f1dfb

But when i filter using image i'm getting all the instance container ids :

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

Results Container ids :

5570dc09b581

3c7e865f1dfb

But i wish to get only container id of mariadb.

How to get container id of docker process using filter as image ?

回答1:

You can use awk and grep to filter specified container id. For example:

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

This will print id of your container.



回答2:

Use "ancestor" instead of "image" that works great. Example:

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

The Docker team may have added it in the last versions: http://docs.docker.com/engine/reference/commandline/ps/



回答3:

With a command docker container ls for listing containers( which is a replacement for docker ps) solution would be:

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

you may also use * sign(if needed) like this:

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

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



回答4:

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

This is perfect. if you need you can add a filter of running images of a particular stsatus alone, like below

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

Various other filter options can be explored here

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