Cómo usar el comando docker container inspect para ver detalles de contenedores

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ás a utilizar el comando docker inspect para ver información detallada sobre contenedores Docker. Explorarás cómo inspeccionar tanto contenedores en ejecución como detenidos, comprenderás el formato de salida JSON predeterminado y descubrirás cómo formatear la salida utilizando una plantilla Go para visualizaciones personalizadas. Además, aprenderás a mostrar información sobre el tamaño de los contenedores usando el comando docker inspect.

A través de ejercicios prácticos, obtendrás experiencia en el uso de docker inspect para recuperar valiosos detalles de configuración, estado y red, lo cual es esencial para solucionar problemas y gestionar tu entorno Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/run -.-> lab-555110{{"Cómo usar el comando docker container inspect para ver detalles de contenedores"}} docker/ps -.-> lab-555110{{"Cómo usar el comando docker container inspect para ver detalles de contenedores"}} docker/stop -.-> lab-555110{{"Cómo usar el comando docker container inspect para ver detalles de contenedores"}} docker/rm -.-> lab-555110{{"Cómo usar el comando docker container inspect para ver detalles de contenedores"}} docker/inspect -.-> lab-555110{{"Cómo usar el comando docker container inspect para ver detalles de contenedores"}} end

Inspeccionar un contenedor en ejecución

En este paso, aprenderás cómo inspeccionar un contenedor Docker en ejecución. El comando docker inspect proporciona información detallada sobre un contenedor, incluyendo su configuración, ajustes de red y estado.

Primero, ejecutemos un contenedor simple que permanezca activo. Utilizaremos la imagen ubuntu y ejecutaremos un comando que mantenga el contenedor en funcionamiento.

docker run -d --name my-running-container ubuntu sleep infinity

En el comando anterior:

  • docker run: Este comando se utiliza para ejecutar un nuevo contenedor.
  • -d: Este flag ejecuta el contenedor en modo detached (desacoplado), lo que significa que se ejecuta en segundo plano.
  • --name my-running-container: Asigna un nombre al contenedor, facilitando su referencia.
  • ubuntu: Esta es la imagen que estamos utilizando. Si la imagen no está disponible localmente, Docker la descargará.
  • sleep infinity: Este comando se ejecuta dentro del contenedor y lo mantiene en ejecución indefinidamente.

Ahora que el contenedor está en ejecución, podemos inspeccionarlo. Usa el comando docker inspect seguido del nombre del contenedor.

docker inspect my-running-container

Este comando mostrará un objeto JSON extenso que contiene todos los detalles sobre my-running-container. Puedes desplazarte por la salida para ver las diferentes secciones, como Id, State, Config, NetworkSettings, etc.

Para hacer la salida más legible o extraer información específica, puedes redirigir la salida a herramientas como jq (un procesador de JSON ligero y flexible para la línea de comandos). Sin embargo, en este laboratorio nos enfocaremos en el comando básico docker inspect.

Después de inspeccionar el contenedor, puedes detenerlo y eliminarlo para limpiar tu entorno.

docker stop my-running-container
docker rm my-running-container
  • docker stop my-running-container: Este comando detiene el contenedor en ejecución.
  • docker rm my-running-container: Este comando elimina el contenedor detenido.

Inspeccionar un contenedor detenido

En este paso, aprenderás que también puedes inspeccionar contenedores que no están actualmente en ejecución. El comando docker inspect funciona tanto con contenedores en ejecución como detenidos, proporcionando acceso a su configuración y estado final.

Primero, ejecutemos un contenedor simple que finalizará después de un breve tiempo.

docker run --name my-stopped-container ubuntu sleep 5

En este comando:

  • docker run: Ejecuta un nuevo contenedor.
  • --name my-stopped-container: Asigna un nombre al contenedor.
  • ubuntu: La imagen a utilizar.
  • sleep 5: El comando ejecutado dentro del contenedor, que hará que finalice después de 5 segundos.

Espera unos segundos a que el contenedor complete la ejecución del comando sleep 5 y se detenga. Puedes verificar que el contenedor se ha detenido listando todos los contenedores (incluyendo los detenidos) usando docker ps -a.

docker ps -a

Deberías ver my-stopped-container en la lista con un estado que indica que ha finalizado.

Ahora puedes inspeccionar el contenedor detenido usando el comando docker inspect, igual que hiciste con el contenedor en ejecución en el paso anterior.

docker inspect my-stopped-container

Verás nuevamente una salida JSON detallada. Observa que la sección State mostrará información sobre el estado de salida del contenedor y cuándo finalizó.

Inspeccionar contenedores detenidos es útil para depurar o entender por qué un contenedor finalizó.

Finalmente, limpia el contenedor detenido.

docker rm my-stopped-container

Formatear la salida de inspección como JSON

En este paso, aprenderás cómo formatear la salida del comando docker inspect específicamente como un arreglo JSON. Esto es particularmente útil al inspeccionar múltiples objetos (como contenedores o imágenes) simultáneamente, ya que proporciona una salida estructurada que puede ser fácilmente procesada por otras herramientas o scripts.

Primero, ejecutemos dos contenedores simples que permanecerán en ejecución.

docker run -d --name container1 ubuntu sleep infinity
docker run -d --name container2 ubuntu sleep infinity

Ahora, inspeccionemos ambos contenedores y formateemos la salida como un arreglo JSON. Podemos hacer esto proporcionando múltiples nombres de contenedores al comando docker inspect.

docker inspect container1 container2

La salida será un único arreglo JSON que contiene los detalles de inspección tanto para container1 como para container2. Cada elemento del arreglo es el objeto JSON correspondiente a un contenedor individual.

Este formato es el predeterminado cuando se inspeccionan múltiples objetos. Representa una forma estándar de mostrar una lista de datos estructurados.

Después de inspeccionar, detén y elimina los contenedores.

docker stop container1 container2
docker rm container1 container2

Formatear la salida de inspección usando plantillas Go

En este paso, aprenderás a utilizar plantillas Go para formatear la salida del comando docker inspect. Esto te permite extraer información específica de la salida JSON detallada y mostrarla en un formato personalizado.

Primero, ejecutemos un contenedor que permanezca en ejecución.

docker run -d --name my-templated-container ubuntu sleep infinity

Ahora, inspeccionemos este contenedor y usemos una plantilla Go para mostrar únicamente su dirección IP. La dirección IP se encuentra en el campo NetworkSettings.IPAddress de la salida de inspección.

docker inspect --format '{{.NetworkSettings.IPAddress}}' my-templated-container

En este comando:

  • --format '{{.NetworkSettings.IPAddress}}': Esta bandera especifica el formato usando una plantilla Go.
    • {{...}}: Estas llaves dobles denotan una acción en la plantilla Go.
    • .: Representa el objeto raíz que se está inspeccionando (el contenedor).
    • NetworkSettings: Accede al campo NetworkSettings dentro del objeto raíz.
    • IPAddress: Accede al campo IPAddress dentro del objeto NetworkSettings.

La salida de este comando será únicamente la dirección IP del contenedor.

Puedes usar plantillas Go para extraer diferentes tipos de información. Por ejemplo, para obtener el nombre e ID del contenedor:

docker inspect --format 'Name: {{.Name}}, ID: {{.Id}}' my-templated-container

Esto mostrará algo como Name: /my-templated-container, ID: <container_id>.

Las plantillas Go ofrecen capacidades avanzadas de formateo, incluyendo condicionales, bucles y funciones. Sin embargo, para este ejemplo básico, solo estamos accediendo a campos.

Después de inspeccionar, detén y elimina el contenedor.

docker stop my-templated-container
docker rm my-templated-container

Mostrar información de tamaño de contenedores

En este paso, aprenderás cómo mostrar la información de tamaño de tus contenedores Docker. Esto puede ser útil para monitorear el uso de disco y comprender el espacio que ocupan tus contenedores.

Por defecto, el comando docker ps no muestra el tamaño de los contenedores. Para incluir información de tamaño, puedes usar la bandera --size o -s.

Primero, ejecutemos un contenedor simple.

docker run -d --name my-size-container ubuntu sleep infinity

Ahora, lista los contenedores en ejecución incluyendo la información de tamaño.

docker ps --size

o

docker ps -s

En la salida, verás una columna adicional llamada SIZE. Esta columna muestra dos valores:

  1. El tamaño de la capa escribible del contenedor (los cambios realizados en el sistema de archivos del contenedor desde su creación).
  2. El tamaño total del contenedor, que incluye el tamaño de las capas de la imagen más la capa escribible.

El tamaño de la capa escribible suele ser pequeño para contenedores simples que no escriben muchos datos. El tamaño total será mayor ya que incluye el tamaño de la imagen base.

También puedes ver la información de tamaño al listar todos los contenedores (incluyendo los detenidos) usando docker ps -a --size.

docker ps -a --size

Esto es útil para ver el tamaño de contenedores que han terminado su ejecución pero aún no han sido eliminados.

Comprender el tamaño de los contenedores es importante para gestionar el espacio en disco en tu host Docker.

Finalmente, detén y elimina el contenedor.

docker stop my-size-container
docker rm my-size-container

Resumen

En este laboratorio, aprendiste a utilizar el comando docker inspect para ver información detallada sobre contenedores Docker. Practicaste la inspección tanto de contenedores en ejecución como detenidos, comprendiendo que el comando proporciona datos completos independientemente del estado del contenedor.

Además, exploraste cómo formatear la salida de docker inspect, específicamente mostrando todos los detalles en formato JSON y utilizando plantillas Go para extraer y mostrar información específica. Finalmente, aprendiste a usar la bandera --size para incluir información sobre el tamaño del contenedor en la salida de inspección.