Obtener la identificación del contenedor de Docker del nombre del contenedor

111

¿Cuál es el comando para obtener la identificación del contenedor de la ventana acoplable del nombre del contenedor?

Dimitri Kopriwa
fuente
4
Lo estoy intentando en este momento, no pude encontrar ninguna muestra en línea. gracias por votar en contra, me gusta la gente feliz.
Dimitri Kopriwa
Debería leer Cómo preguntar y proporcionar un ejemplo mínimo reproducible . ¿Cómo se ve docker --listo similar? ¿Cuál es el comando para crear un nuevo contenedor? etc
fedorqui 'ASÍ que deja de dañar'
1
Creo que mi pregunta es bastante clara, vota hacia arriba y daré la respuesta lo antes posible.
Dimitri Kopriwa
1
No existe tal cosa como un "contenedor" que yo sepa en bash. ¿Quizás te refieres a contenedores Docker ? Si es así, las personas que miran la etiqueta "bash" pueden confundirse. Sin embargo, obtienes la identificación del contenedor del nombre, estoy seguro de que es un comando real y no tiene nada que ver con el lenguaje de programación bash.
djhaskin987

Respuestas:

191

En Linux:

sudo docker ps -aqf "name=containername"

O en OS X, Windows:

docker ps -aqf "name=containername"

¿Dónde containernameestá el nombre de su contenedor?

Para evitar obtener falsos positivos, como señala @llia Sidorenko, puede usar anclajes de expresiones regulares así:

docker ps -aqf "name=^containername$"

explicación:

  • -qpor tranquilidad. salida solo el ID
  • -apara todos. funciona incluso si su contenedor no se está ejecutando
  • -fpara filtro .
  • ^el nombre del contenedor debe comenzar con esta cadena
  • $el nombre del contenedor debe terminar con esta cadena
code_monk
fuente
7
una nota para cualquiera que se encuentre con esto: sudo ya no es necesario en Linux si se agrega al grupo de docker (muy recomendado)
code_monk
9
Tenga cuidado con esta respuesta, ya que name = containername es en realidad un comodín y coincidirá con cualquier nombre (. *) Containername (. *)
Ilia Sidorenko
5
@ekkis usan la --no-truncbandera. entoncesdocker ps --no-trunc -aqf "name=containername"
code_monk
3
A partir de 2019-01-07, esto no funcionó para mí. Estoy usando Docker v17.06.0. El comando docker inspect --format="{{.Id}}" imageNamefuncionó para mí.
PatS
1
@code_monk, Gracias por la confirmación. Agregué un comentario a la respuesta de Rosberg Linhares, de donde obtuve la idea, y sugerí que su respuesta se cambiara por la respuesta correcta.
PatS
37

Puedes probar esto:

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

Este enfoque es independiente del sistema operativo.

Rosberg Linhares
fuente
5
Esto devuelve ID DE IMAGEN NO ID DE CONTENEDOR
vijay
2
@vijay, para mí esto da el ID del contenedor: https://i.ibb.co/BPwyxDj/Docker-Container-Id.png
Rosberg Linhares
Esto también me da el ID del contenedor. El ID completo del contenedor, no solo los primeros 12 caracteres truncados.
cowlinator
¡Amo esta! Gracias. 👍
GollyJer
@vijay @RosbergLinhares si proporciona el nombre del contenedor (dado en la NAMEScolumna con docker ps), proporciona el ID del contenedor. Si en su lugar se proporciona el nombre de la imagen (dado en la IMAGEcolumna con docker ps), en su lugar se genera el ID de la imagen.
Wolfson
12
  1. Obtener identificadores de contenedores de contenedores en ejecución:

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. Obtenga ID de contenedor de todos los contenedores:

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    
kalyani chaudhari
fuente
2
docker ps -fq no funcionó, pero docker ps -qfsí (orden de las banderas)
thom_nic
4

El siguiente comando:

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

Da esta salida:

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
fuente
3

Si desea obtener ContainerId completo según el nombre del contenedor, use el siguiente comando

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

La imagen de Docker inspecciona ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}

rajat shukla
fuente
Agregue una explicación a su respuesta. Las respuestas que son solo código (o en este caso solo comando) no son útiles para los nuevos usuarios que pueden no entender lo que realmente hace el comando o código. Busque programación de culto de carga para saber por qué esto es malo.
Max Vollmer
0

En mi caso, estaba ejecutando el contenedor Docker de Tensorflow en Ubuntu 20.04: Ejecute su contenedor Docker en una terminal, lo ejecuté con

docker run -it od

Y luego inició otra terminal y corrió a continuación docker pscon sudo:

sudo docker ps

Obtuve con éxito la identificación del contenedor:

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

La forma más sencilla que se me ocurre es analizar la salida de docker ps

Ejecutemos la última imagen de ubuntu de forma interactiva y conectemos a ella

docker run -it ubuntu /bin/bash

Si ejecuta docker psen otra terminal, puede ver algo como

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

Desafortunadamente, analizar este formato no es fácil ya que usan espacios para alinear cosas manualmente

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

Aquí hay un script que convierte la salida a JSON.

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

En realidad, la salida es un poco más conveniente para trabajar que eso. Cada campo tiene 20 caracteres de ancho. [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

Gregory Nisbet
fuente