Compartir comentarios
Las respuestas se generan en base a la documentación.

docker inspect

DescripciónDevuelve información de bajo nivel sobre los objetos de Docker
Usodocker inspect [OPTIONS] NAME|ID [NAME|ID...]

Descripción

Docker inspect proporciona información detallada sobre los componentes controlados por Docker.

Por defecto, docker inspect presentará los resultados en un array JSON.

Opciones

OpciónPredeterminadoDescripción
-f, --formatFormatea la salida utilizando una plantilla personalizada:
'json': Imprime en formato JSON
'TEMPLATE': Imprime la salida utilizando la plantilla Go provista.
Consulta https://docs-docker.esdocu.com/go/formatting/ para obtener más información sobre cómo dar formato a la salida con plantillas
-s, --sizeMuestra los tamaños totales de los archivos si el tipo es contenedor
--typeSolo inspecciona objetos del tipo indicado

Ejemplos

Formatear la salida (--format)

Si se especifica un formato, la plantilla provista se ejecutará para cada resultado.

El paquete text/template de Go describe todos los detalles del formato.

Especificar el tipo de destino (--type)

--type config|container|image|node|network|secret|service|volume|task|plugin

El comando docker inspect coincide con cualquier tipo de objeto por ID o nombre. En algunos casos, existen múltiples tipos de objetos (por ejemplo, un contenedor y un volumen) con el mismo nombre, lo que hace que el resultado sea ambiguo.

Para restringir docker inspect a un tipo de objeto específico, usa la opción --type.

El siguiente ejemplo inspecciona un volumen llamado myvolume.

$ docker inspect --type=volume myvolume

Inspeccionar el tamaño de un contenedor (-s, --size)

La opción --size, o su forma abreviada -s, añade dos campos adicionales a la salida de docker inspect. Esta opción solo funciona para contenedores. El contenedor no tiene que estar en ejecución; también funciona para contenedores detenidos.

$ docker inspect --size mycontainer

La salida incluye la información completa de un comando docker inspect normal, con los siguientes campos adicionales:

  • SizeRootFs: el tamaño total de todos los archivos del contenedor, en bytes.
  • SizeRw: el tamaño en bytes de los archivos que se han creado o cambiado en el contenedor en comparación con su imagen.
$ docker run --name database -d redis
3b2cbf074c99db4a0cad35966a9e24d7bc277f5565c17233386589029b7db273
$ docker inspect --size database -f '{{ .SizeRootFs }}'
123125760
$ docker inspect --size database -f '{{ .SizeRw }}'
8192
$ docker exec database fallocate -l 1000 /newfile
$ docker inspect --size database -f '{{ .SizeRw }}'
12288

Obtener la dirección IP de una instancia

En la mayoría de los casos, puedes extraer cualquier campo del JSON de una manera bastante sencilla.

$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID

Obtener la dirección MAC de una instancia

$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID

Obtener la ruta de los registros (logs) de una instancia

$ docker inspect --format='{{.LogPath}}' $INSTANCE_ID

Obtener el nombre de la imagen de una instancia

$ docker inspect --format='{{.Config.Image}}' $INSTANCE_ID

Listar todos los enlaces de puertos

Puedes iterar sobre arrays y mapas en los resultados para generar una salida de texto simple:

$ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{with $conf}}{{(index . 0).HostPort}}{{else}}none{{end}} {{end}}' $INSTANCE_ID

Encontrar un mapeo de puerto específico

La sintaxis .Field no funciona cuando el nombre del campo comienza con un número, pero la función index del lenguaje de plantillas sí. La sección .NetworkSettings.Ports contiene un mapa de los mapeos de puertos internos a una lista de objetos de dirección/puerto externos. Para obtener solo el puerto público numérico, usas index para encontrar el mapa de puertos específico, y luego index 0 contiene el primer objeto dentro del mismo. Después, especifica el campo HostPort para obtener la dirección pública.

$ docker inspect --format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}' $INSTANCE_ID

Obtener una subsección en formato JSON

Si solicitas un campo que es en sí mismo una estructura que contiene otros campos, por defecto obtendrás un volcado al estilo Go de los valores internos. Docker añade una función de plantilla, json, que se puede aplicar para obtener los resultados en formato JSON.

$ docker inspect --format='{{json .Config}}' $INSTANCE_ID