Obtenir l'ID du conteneur Docker à partir du nom du conteneur

111

Quelle est la commande pour obtenir l'ID du conteneur Docker à partir du nom du conteneur?

Dimitri Kopriwa
la source
4
J'essaye en ce moment, je n'ai trouvé aucun échantillon en ligne. merci d'avoir voté contre, j'aime les gens heureux.
Dimitri Kopriwa
Vous devriez lire Comment demander et fournir un exemple reproductible minimal . À quoi ressemble docker --listou similaire? Quelle est la commande pour créer un nouveau conteneur? etc
fedorqui 'Alors arrêtez de nuire'
1
Je pense que ma question est assez claire, merci de voter, je donnerai la réponse dès que possible.
Dimitri Kopriwa
1
Il n'y a pas de "conteneur" que je connaisse dans bash. Peut-être voulez-vous dire des conteneurs docker ? Si tel est le cas, les personnes qui regardent la balise "bash" peuvent être confuses. Cependant, vous obtenez l'identifiant du conteneur à partir du nom, je suis sûr que c'est une commande réelle et n'a rien à voir avec le langage de programmation bash.
djhaskin987

Réponses:

191

Sous Linux:

sudo docker ps -aqf "name=containername"

Ou sous OS X, Windows:

docker ps -aqf "name=containername"

containernameest le nom de votre conteneur.

Pour éviter d'obtenir de faux positifs, comme le note @llia Sidorenko, vous pouvez utiliser des ancres regex comme ceci:

docker ps -aqf "name=^containername$"

explication:

  • -qpour le calme. afficher uniquement l'ID
  • -apour tous. fonctionne même si votre conteneur n'est pas en cours d'exécution
  • -fpour filtre .
  • ^le nom du conteneur doit commencer par cette chaîne
  • $le nom du conteneur doit se terminer par cette chaîne
code_monk
la source
7
une note à tous ceux qui trébuchent sur ceci: sudo n'est plus nécessaire sur linux si vous vous ajoutez au groupe docker (fortement recommandé)
code_monk
9
Veuillez faire attention à cette réponse, car name = containername est en fait un caractère générique et il correspondra à tout ce qui porte le nom (. *) Containername (. *)
Ilia Sidorenko
5
@ekkis utilise le --no-truncdrapeau. sodocker ps --no-trunc -aqf "name=containername"
code_monk
3
À partir du 07/01/2019, cela n'a pas fonctionné pour moi. J'utilise docker v17.06.0. La commande a docker inspect --format="{{.Id}}" imageNamefonctionné pour moi.
PatS
1
@code_monk, merci pour la confirmation. J'ai ajouté un commentaire à la réponse de Rosberg Linhares, d'où j'ai eu l'idée, et j'ai suggéré que sa réponse soit remplacée par la bonne réponse.
PatS
37

Vous pouvez essayer ceci:

docker inspect --format="{{.Id}}" container_name

Cette approche est indépendante du système d'exploitation.

Rosberg Linhares
la source
5
Cela renvoie IMAGE ID NOT CONTAINER ID
vijay
2
@vijay, pour moi, cela donne l'ID du conteneur: https://i.ibb.co/BPwyxDj/Docker-Container-Id.png
Rosberg Linhares
Cela me donne également l'ID du conteneur. L'ID de conteneur complet, pas seulement les 12 premiers caractères tronqués.
cowlinator
J'aime celui-ci! Merci. 👍
GollyJer
@vijay @RosbergLinhares si vous indiquez le nom du conteneur (indiqué dans la NAMEScolonne avec docker ps), il donne l'ID du conteneur. Si le nom de l'image (donné dans la IMAGEcolonne avec docker ps) est fourni à la place, il renvoie l'ID de l'image à la place.
Wolfson le
12
  1. Obtenez les identifiants des conteneurs en cours d'exécution:

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. Obtenez les identifiants de tous les conteneurs:

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    
kalyani chaudhari
la source
2
docker ps -fq n'a pas fonctionné mais a docker ps -qffait (ordre des drapeaux)
thom_nic
4

La commande suivante:

docker ps --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | Image:  {{.Image}} |  Ports: {{.Ports}}'

Donne cette sortie:

CONTAINER ID : d8453812a556 | Name: peer0.ORG2.ac.ae | Image:  hyperledger/fabric-peer:1.4 |  Ports: 0.0.0.0:27051->7051/tcp, 0.0.0.0:27053->7053/tcp
CONTAINER ID : d11bdaf8e7a0 | Name: peer0.ORG1.ac.ae | Image:  hyperledger/fabric-peer:1.4 |  Ports: 0.0.0.0:17051->7051/tcp, 0.0.0.0:17053->7053/tcp
CONTAINER ID : b521f48a3cf4 | Name: couchdb1 | Image:  hyperledger/fabric-couchdb:0.4.15 |  Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5985->5984/tcp
CONTAINER ID : 14436927aff7 | Name: ca.ORG1.ac.ae | Image:  hyperledger/fabric-ca:1.4 |  Ports: 0.0.0.0:7054->7054/tcp
CONTAINER ID : 9958e9f860cb | Name: couchdb | Image:  hyperledger/fabric-couchdb:0.4.15 |  Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp
CONTAINER ID : 107466b8b1cd | Name: ca.ORG2.ac.ae | Image:  hyperledger/fabric-ca:1.4 |  Ports: 0.0.0.0:7055->7054/tcp
CONTAINER ID : 882aa0101af2 | Name: orderer1.o1.ac.ae | Image:  hyperledger/fabric-orderer:1.4 |  Ports: 0.0.0.0:7050->7050/tcp`enter code here`
Sidharth Srivastava
la source
3

Si vous souhaitez obtenir un ContainerId complet basé sur le nom du conteneur, utilisez la commande suivante

 docker ps --no-trunc -aqf name=containername
Girdhar Singh Rathore
la source
0

Image Docker inspecter ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}

Rajat shukla
la source
Veuillez ajouter une explication à votre réponse. Les réponses qui sont uniquement du code (ou dans ce cas, une commande uniquement) ne sont pas utiles pour les nouveaux utilisateurs qui pourraient ne pas comprendre ce que fait réellement la commande ou le code. Recherchez la programmation culte du fret pour savoir pourquoi c'est mauvais.
Max Vollmer
0

Dans mon cas, j'exécutais le conteneur Docker Tensorflow dans Ubuntu 20.04: Exécutez votre conteneur Docker dans un terminal, je l'ai exécuté avec

docker run -it od

Et puis commencé un autre terminal et exécuté ci-dessous docker psavec sudo:

sudo docker ps

J'ai réussi à obtenir l'identifiant du conteneur:

CONTAINER ID        IMAGE               COMMAND             CREATED             
STATUS              PORTS               NAMES
e4ca1ad20b84        od                  "/bin/bash"         18 minutes ago      
Up 18 minutes                           unruffled_stonebraker
Imran
la source
-2

Le moyen le plus simple auquel je puisse penser est d'analyser la sortie de docker ps

Exécutons la dernière image ubuntu de manière interactive et connectons-y

docker run -it ubuntu /bin/bash

Si vous exécutez docker psdans un autre terminal, vous pouvez voir quelque chose comme

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
8fddbcbb101c        ubuntu:latest       "/bin/bash"         10 minutes ago      Up 10 minutes                           gloomy_pasteur

Malheureusement, l'analyse de ce format n'est pas facile car ils utilisent des espaces pour aligner manuellement les éléments

$ sudo docker ps | sed -e 's/ /@/g'
CONTAINER@ID@@@@@@@@IMAGE@@@@@@@@@@@@@@@COMMAND@@@@@@@@@@@@@CREATED@@@@@@@@@@@@@STATUS@@@@@@@@@@@@@@PORTS@@@@@@@@@@@@@@@NAMES
8fddbcbb101c@@@@@@@@ubuntu:latest@@@@@@@"/bin/bash"@@@@@@@@@13@minutes@ago@@@@@@Up@13@minutes@@@@@@@@@@@@@@@@@@@@@@@@@@@gloomy_pasteur@@@@@@

Voici un script qui convertit la sortie en JSON.

https://gist.github.com/mminer/a08566f13ef687c17b39

En fait, la sortie est un peu plus pratique à utiliser que cela. Chaque champ a une largeur de 20 caractères. [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

Gregory Nisbet
la source