Cómo usar el comando docker inspect para obtener información detallada

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo utilizar de manera efectiva el comando docker inspect para obtener información detallada sobre objetos de Docker, centrándose específicamente en contenedores. Comenzará inspeccionando un contenedor y comprendiendo la salida JSON predeterminada completa que proporciona el comando.

A partir de esto, luego explorará cómo formatear la salida utilizando plantillas de Go para extraer puntos de datos específicos, como la dirección IP de un contenedor. El laboratorio también cubrirá cómo inspeccionar el tamaño de un contenedor y demostrará cómo inspeccionar diferentes tipos de objetos de Docker más allá de solo contenedores.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-555165{{"Cómo usar el comando docker inspect para obtener información detallada"}} docker/ps -.-> lab-555165{{"Cómo usar el comando docker inspect para obtener información detallada"}} docker/inspect -.-> lab-555165{{"Cómo usar el comando docker inspect para obtener información detallada"}} docker/pull -.-> lab-555165{{"Cómo usar el comando docker inspect para obtener información detallada"}} docker/images -.-> lab-555165{{"Cómo usar el comando docker inspect para obtener información detallada"}} docker/volume -.-> lab-555165{{"Cómo usar el comando docker inspect para obtener información detallada"}} docker/network -.-> lab-555165{{"Cómo usar el comando docker inspect para obtener información detallada"}} end

Inspeccionar un contenedor y entender la salida predeterminada

En este paso, aprenderá cómo inspeccionar un contenedor de Docker y entender la salida predeterminada. El comando docker inspect proporciona información detallada sobre objetos de Docker, incluyendo contenedores, imágenes, redes y volúmenes. Por defecto, devuelve una matriz JSON que contiene detalles de configuración, estado y otros metadatos.

Primero, vamos a descargar una imagen simple para trabajar. Utilizaremos la imagen hello-world.

docker pull hello-world

Debería ver una salida que indique que la imagen se está descargando y extrayendo.

Ahora, vamos a ejecutar un contenedor a partir de esta imagen.

docker run hello-world

Este comando ejecuta el contenedor hello-world, que imprime un mensaje y luego se cierra.

Para inspeccionar el contenedor que se acaba de ejecutar, necesitas su ID o nombre. Puedes encontrar el ID del último contenedor que se ha cerrado utilizando docker ps -a.

docker ps -a

Busca el contenedor con la imagen hello-world y copia su ID de contenedor (CONTAINER ID).

Ahora, utiliza el comando docker inspect seguido del ID de contenedor que acabas de copiar. Reemplaza <container_id> con el ID real.

docker inspect <container_id>

Este comando generará un gran documento JSON que contiene información detallada sobre el contenedor. Esta salida predeterminada incluye una amplia gama de datos, como el estado del contenedor, la configuración, la configuración de red y los volúmenes montados. Comprender esta salida es crucial para depurar y administrar contenedores.

Desplázate por la salida para tener una idea de la información disponible. Verás campos como Id, State, Created, Path, Args, Config, NetworkSettings y muchos más.

Formatear la salida para obtener información específica

En el paso anterior, viste que docker inspect proporciona una gran cantidad de información en formato JSON. A menudo, solo necesitas piezas específicas de información. Docker te permite formatear la salida utilizando la opción --format y plantillas de Go.

Vamos a obtener la dirección IP de un contenedor en ejecución. Primero, necesitamos un contenedor en ejecución. Utilizaremos un simple contenedor nginx para esto.

Descarga la imagen nginx:

docker pull nginx

Ejecuta un contenedor nginx en modo desatendido (-d) para que se ejecute en segundo plano:

docker run -d nginx

Este comando mostrará el ID del contenedor. Copia este ID.

Ahora, vamos a usar docker inspect con la opción --format para obtener la dirección IP del contenedor. Reemplaza <container_id> con el ID de tu contenedor nginx en ejecución.

docker inspect --format='{{.NetworkSettings.IPAddress}}' <container_id>

La opción --format utiliza la sintaxis de plantillas de Go. . se refiere al objeto JSON de nivel superior. Navegamos a través de la estructura JSON utilizando la notación de puntos: .NetworkSettings accede al objeto NetworkSettings, y .IPAddress accede al campo IPAddress dentro de NetworkSettings. Las dobles llaves {{ }} indican una acción de plantilla de Go.

Deberías ver la dirección IP del contenedor impresa en la consola.

Puedes extraer otra información de manera similar. Por ejemplo, para obtener el estado del contenedor:

docker inspect --format='{{.State.Status}}' <container_id>

Esto mostrará el estado actual del contenedor (por ejemplo, "running" - en ejecución).

Para obtener el nombre del contenedor:

docker inspect --format='{{.Name}}' <container_id>

Esto mostrará el nombre del contenedor (por ejemplo, /vigilant_goldberg).

También puedes combinar múltiples campos en la cadena de formato. Por ejemplo, para obtener el ID del contenedor y su estado:

docker inspect --format='ID: {{.Id}}, Status: {{.State.Status}}' <container_id>

Esto imprimirá el ID y el estado en un formato más legible.

Experimenta con diferentes campos de la salida JSON que viste en el paso anterior para extraer la información que necesitas.

Inspeccionar el tamaño de un contenedor

En este paso, aprenderá cómo inspeccionar el tamaño de un contenedor de Docker. Comprender el tamaño de los contenedores es importante para administrar el espacio en disco y optimizar la creación de imágenes.

El comando docker inspect puede proporcionar información sobre el tamaño del contenedor, pero una forma más directa de ver el tamaño de los contenedores en ejecución es utilizando el comando docker ps con la opción --size.

Primero, asegúrate de tener un contenedor en ejecución. Si tu contenedor nginx del paso anterior sigue en ejecución, puedes utilizarlo. Si no, ejecútalo de nuevo:

docker run -d nginx

Ahora, lista los contenedores en ejecución e incluye su información de tamaño:

docker ps --size

Verás una columna adicional etiquetada como SIZE. Esta columna muestra dos valores: el tamaño virtual y el tamaño en disco.

  • Tamaño Virtual: Este es el tamaño total de las capas de la imagen del contenedor más el tamaño de la capa escribible del contenedor.
  • Tamaño: Este es el tamaño de la capa escribible del contenedor en disco. Esta capa contiene todos los cambios realizados en el sistema de archivos del contenedor desde que se inició.

Para los contenedores que se han detenido, puedes usar docker ps -a --size para ver sus tamaños.

docker ps -a --size

También puedes obtener información de tamaño utilizando docker inspect y formateando la salida. La información de tamaño está disponible en .SizeRw (tamaño de la capa escribible) y .SizeRootFs (tamaño total incluyendo las capas de la imagen).

Reemplaza <container_id> con el ID de uno de tus contenedores:

docker inspect --format='Writable Layer Size: {{.SizeRw}}, Total Size: {{.SizeRootFs}}' <container_id>

Este comando mostrará el tamaño de la capa escribible y el tamaño total del sistema de archivos raíz del contenedor.

Comprender la diferencia entre el tamaño virtual y el tamaño en disco es importante. El tamaño virtual incluye las capas de imagen compartidas, mientras que el tamaño en disco de un contenedor en ejecución se refleja principalmente en los datos únicos escritos en la capa escribible de ese contenedor específico.

Inspeccionar un tipo específico de objeto

En los pasos anteriores, utilizaste docker inspect en contenedores. Sin embargo, docker inspect es un comando versátil que se puede utilizar para inspeccionar varios objetos de Docker, incluyendo imágenes, redes y volúmenes.

Para inspeccionar un objeto distinto de un contenedor, debes especificar el tipo de objeto antes del nombre o ID del objeto. La sintaxis es docker inspect <object_type> <object_name_or_id>.

Vamos a inspeccionar la imagen nginx que descargaste anteriormente.

Primero, lista tus imágenes para obtener el ID o nombre de la imagen:

docker images

Encuentra la imagen nginx y anota su REPOSITORY, TAG o IMAGE ID.

Ahora, inspecciona la imagen nginx. Puedes usar el nombre y la etiqueta de la imagen (por ejemplo, nginx:latest) o el ID de la imagen. Reemplaza <image_name_or_id> con el valor adecuado.

docker inspect image <image_name_or_id>

Esto mostrará información detallada sobre la imagen nginx, incluyendo sus capas, configuración y metadatos. Observa que la estructura de la salida es diferente a la de inspeccionar un contenedor, ya que refleja las propiedades de una imagen.

A continuación, vamos a inspeccionar una red de Docker. Docker crea redes predeterminadas. Puedes listarlas utilizando docker network ls.

docker network ls

Probablemente verás redes como bridge, host y none. Vamos a inspeccionar la red bridge.

docker inspect network bridge

Este comando mostrará detalles sobre la red bridge, incluyendo su configuración, contenedores conectados y información de direccionamiento IP.

Finalmente, vamos a inspeccionar un volumen de Docker. Si no tienes ningún volumen, puedes crear uno.

docker volume create myvolume

Ahora, inspecciona el volumen que acabas de crear.

docker inspect volume myvolume

Esto mostrará información sobre myvolume, como su controlador, punto de montaje y alcance.

Al especificar el tipo de objeto (container, image, network, volume, etc.), puedes usar docker inspect para obtener información detallada sobre diferentes componentes de tu entorno de Docker.

Resumen

En este laboratorio, aprendiste cómo utilizar el comando docker inspect para obtener información detallada sobre los contenedores de Docker. Comenzaste inspeccionando un contenedor y comprendiendo la salida JSON predeterminada completa, que proporciona una amplia gama de detalles de configuración y estado.

Posteriormente, exploraste cómo formatear la salida utilizando la bandera --format y la plantilla de Go para extraer información específica, como la dirección IP de un contenedor. Esto demuestra la flexibilidad de docker inspect para adaptar la salida a tus necesidades.