2015-04-02 15 views
25

Ho cercato di ottenere l'id del contenitore di esempio finestra mobile utilizzando il comando processo finestra mobile, ma quando sto cercando con filtro per nome funziona bene per me.come filtrare processo finestra mobile in base all'immagine

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

Risultati contenitore id:

3c7e865f1dfb

Ma quando filtro mediante immagine sto ottenendo tutti gli ID container esempio:

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

Risultati ids container:

5570dc09b581

3c7e865f1dfb

ma desidero ottenere solo id contenitore di MariaDB.

Come ottenere l'id contenitore del processo finestra mobile utilizzando il filtro come immagine?

risposta

21

È possibile utilizzare awk e grep per filtrare l'ID contenitore specificato. Per esempio:

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

Ciò stamperà id del vostro contenitore.

+0

Perfetto! per questo – Justin

+0

qualcosa di più semplice: 'docker ps | awk '/docker-mariadb:1.0.1/{print $ 1} '' – BMW

+2

qualcosa di più esatto:' finestra mobile ps -a | awk '$ 2 == "docker-mariadb: 1.0.1" {print $ 1}' '. –

45

Utilizzare "antenato" anziché "immagine" che funziona perfettamente. Esempio:

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

La squadra Docker potrebbe aver aggiunto nelle ultime versioni: http://docs.docker.com/engine/reference/commandline/ps/

+0

Ruben, sto provando questo approccio ma restituisce il contenitore sbagliato. Puoi aiutare? http://stackoverflow.com/questions/37255264/why-does-docker-filter-ancestor-imagename-find-the-wrong-container – Richard

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

Questo è perfetto. se è necessario si può aggiungere un filtro di gestire immagini di un particolare stsatus solo, come di seguito

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

Varie altre opzioni di filtro possono essere esplorati qui

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

1

Con un comando docker container ls messa in vendita di contenitori (che è un sostituto per docker ps) soluzione potrebbe essere:

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

si può anche utilizzare * segno (se necessario) come questo:

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

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

Problemi correlati