J'ai essayé d'obtenir l'ID de conteneur de l'instance de docker à l'aide de la commande de processus docker, mais lorsque j'essaie avec le filtre par nom cela fonctionne bien pour moi.
Sudo -S docker ps -q --filter="name=romantic_rosalind"
Identifiant du conteneur de résultats:
3c7e865f1dfb
Mais quand je filtre en utilisant image je reçois tous les identifiants de conteneur d'instance:
Sudo -S docker ps -q --filter="image=docker-mariadb:1.0.1"
ID du conteneur de résultats:
5570dc09b581
3c7e865f1dfb
Mais je souhaite obtenir uniquement l'identifiant du conteneur de mariadb.
Comment obtenir l'identifiant du conteneur du processus docker en utilisant le filtre comme image?
Vous pouvez utiliser awk
et grep
pour filtrer l'ID de conteneur spécifié. Par exemple:
docker ps | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'
Cela imprimera l'identifiant de votre conteneur.
Utilisez "ancêtre" au lieu de "image" qui fonctionne très bien. Exemple:
Sudo -S docker ps -q --filter ancestor=docker-mariadb:1.0.1
L'équipe Docker l'a peut-être ajouté dans les dernières versions: http://docs.docker.com/engine/reference/commandline/ps/
Avec une commande docker container ls
pour répertorier les conteneurs (qui remplace docker ps
) la solution serait:
docker container ls | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'
vous pouvez également utiliser *
signe (si nécessaire) comme ceci:
docker container ls | grep "docker-mariadb:*" | awk '{ print $1 }'
Voir https://docs.docker.com/engine/reference/commandline/container_ls/
docker ps -a | awk '{ print $1,$2 }' | grep imagename | awk '{print $1 }'
C'est parfait. si vous en avez besoin, vous pouvez ajouter un filtre d'images en cours d'exécution d'un état particulier seul, comme ci-dessous
docker ps -a --filter=running | awk '{ print $1,$2 }' | grep rulsoftreg:5000/mypayroll/cisprocessing-printdocsnotifyconsumer:latest | awk '{print $1 }'
Diverses autres options de filtrage peuvent être explorées ici
https://docs.docker.com/v1.11/engine/reference/commandline/ps/