docker inspect
| Descripción | Devuelve información de bajo nivel sobre los objetos de Docker |
|---|---|
| Uso | docker 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ón | Predeterminado | Descripción |
|---|---|---|
-f, --format | Formatea 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, --size | Muestra los tamaños totales de los archivos si el tipo es contenedor | |
--type | Solo 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