Ottieni l'ID del contenitore Docker dal nome del contenitore


112

Qual è il comando per ottenere l'ID del contenitore docker dal nome del contenitore?


4
Sto provando in questo momento, non sono riuscito a trovare alcun campione online. grazie per aver votato, mi piacciono le persone felici.
Dimitri Kopriwa

Dovresti leggere Come chiedere e fornire un esempio riproducibile minimo . Come si presenta docker --listo simile? Qual è il comando per creare un nuovo contenitore? ecc
fedorqui "SO stop harming"

1
Penso che la mia domanda sia abbastanza chiara, per favore vota, darò la risposta al più presto.
Dimitri Kopriwa

1
Non esiste un "contenitore" che io sappia in bash. Forse intendi container docker ? In tal caso, le persone che guardano il tag "bash" potrebbero confondersi. comunque si ottiene l'id del contenitore dal nome, sono sicuro che sia un comando effettivo e non ha nulla a che fare con il linguaggio di programmazione bash.
djhaskin987

Risposte:


196

In Linux:

sudo docker ps -aqf "name=containername"

O in OS X, Windows:

docker ps -aqf "name=containername"

dove containername il nome del tuo contenitore.

Per evitare di ottenere falsi positivi, come nota @llia Sidorenko, puoi utilizzare le ancore regex in questo modo:

docker ps -aqf "name=^containername$"

spiegazione:

  • -qper la calma. emette solo l'ID
  • -aper tutti. funziona anche se il tuo contenitore non è in esecuzione
  • -fper filtro .
  • ^il nome del contenitore deve iniziare con questa stringa
  • $il nome del contenitore deve terminare con questa stringa

7
una nota per chiunque si imbatta in questo: sudo non è più richiesto su Linux se ti aggiungi al gruppo
docker

9
Si prega di fare attenzione con questa risposta, poiché name = Containername è in realtà un carattere jolly e corrisponderà a qualsiasi cosa con nome (. *) Containername (. *)
Ilia Sidorenko

5
@ekkis usa la --no-truncbandiera. quindidocker ps --no-trunc -aqf "name=containername"
code_monk

3
A partire dal 07/01/2019, questo non ha funzionato per me. Sto usando la finestra mobile v17.06.0. Il comando ha docker inspect --format="{{.Id}}" imageNamefunzionato per me.
PatS

1
@code_monk, grazie per la conferma. Ho aggiunto un commento alla risposta di Rosberg Linhares da cui mi è venuta l'idea e ho suggerito che la sua risposta venisse modificata nella risposta corretta.
PatS

38

Puoi provare questo:

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

Questo approccio è indipendente dal sistema operativo.


5
Ciò restituisce ID IMMAGINE NON ID CONTAINER
vijay

2
@vijay, per me questo fornisce l'ID del contenitore: https://i.ibb.co/BPwyxDj/Docker-Container-Id.png
Rosberg Linhares

Questo mi dà anche l'ID del contenitore. L'ID completo del contenitore, non solo i primi 12 caratteri troncati.
cowlinator

Ama questo! Grazie. 👍
GollyJer

@vijay @RosbergLinhares se fornisci il nome del contenitore (indicato nella NAMEScolonna con docker ps), fornisce l'ID del contenitore. Se invece viene fornito il nome dell'immagine (fornito nella IMAGEcolonna con docker ps), restituisce invece l'ID dell'immagine.
Wolfson

12
  1. Ottieni ID container dei container in esecuzione:

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. Ottieni gli ID contenitore di tutti i contenitori:

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    

2
docker ps -fq non ha funzionato tuttavia docker ps -qfha funzionato (ordine delle bandiere)
thom_nic

4

Il seguente comando:

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

Fornisce questo output:

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`

3

Se desideri ottenere un ID contenitore completo in base al nome del contenitore, utilizza il comando seguente

 docker ps --no-trunc -aqf name=containername

0

Immagine Docker ispeziona ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}


Per favore aggiungi una spiegazione alla tua risposta. Le risposte che sono solo codice (o in questo caso solo comando) non sono utili per i nuovi utenti che potrebbero non capire cosa fa effettivamente il comando o il codice. Cerca la programmazione del culto del carico per scoprire perché questo è un male.
Max Vollmer

0

Nel mio caso stavo eseguendo Tensorflow Docker container in Ubuntu 20.04: esegui il tuo docker container in un terminale, l'ho eseguito con

docker run -it od

E poi ha avviato un altro terminale ed è corso di seguito docker pscon sudo:

sudo docker ps

Ho ottenuto con successo l'ID del contenitore:

CONTAINER ID        IMAGE               COMMAND             CREATED             
STATUS              PORTS               NAMES
e4ca1ad20b84        od                  "/bin/bash"         18 minutes ago      
Up 18 minutes                           unruffled_stonebraker

-2

Il modo più semplice a cui posso pensare è analizzare l'output di docker ps

Eseguiamo l'ultima immagine di Ubuntu in modo interattivo e connettiamoci ad essa

docker run -it ubuntu /bin/bash

Se esegui docker psin un altro terminale puoi vedere qualcosa di simile

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

Sfortunatamente, analizzare questo formato non è facile poiché utilizza gli spazi per allineare manualmente le cose

$ 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@@@@@@

Ecco uno script che converte l'output in JSON.

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

In realtà, l'output è un po 'più comodo con cui lavorare. Ogni campo è largo 20 caratteri. [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.