GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Poniendo una Lupa a Docker con Docker Inspect

Si está buscando una vista detallada de todos los componentes principales de Docker a partir de imágenes, contenedores, etc. de Docker, el comando de inspección de Docker es para usted.

En este tutorial, aprenderá cómo convertirse en un detective para descubrir información detallada sobre muchos componentes de Docker para la depuración, la resolución de problemas o simplemente su mera curiosidad.

¡Comencemos!

Requisitos previos

Si desea seguir paso a paso, asegúrese de tener lo siguiente:

  • Docker:este tutorial usa Docker v19.03.11 en Ubuntu 18.04.5 LTS.
  • Cualquier imagen de Docker descargada y disponible. Este tutorial utiliza la imagen NGINX Docker más reciente disponible en Docker Hub.
  • Al menos un contenedor ejecutándose en el host de Docker.

Inspección de imágenes de Docker con Docker Inspect

La Docker Inspect puede proporcionar información sobre muchos componentes diferentes de Docker, pero primero comencemos con uno de los componentes más populares; imágenes Si ha descargado una imagen, ¿cómo verifica la información sobre esa imagen? Vamos a averiguarlo.

Suponiendo que tiene al menos una imagen en su host de Docker, use el inspect comando para consultar esa imagen. El siguiente comando asume que tienes una imagen llamada nginx en su servidor.

docker image inspect nginx

Una vez ejecutado, el comando anterior devuelve una gran cantidad de información a través de JSON sobre esa imagen en particular. Algunos atributos notables son:

  1. La etiqueta de imagen.
  2. La hora en que se creó la imagen.
  3. El nombre de host del contenedor asociado con la imagen nginx de Docker.
  4. Los puertos de red que el contenedor pone a disposición de la red externa.
  5. También notará los volúmenes adjuntos al contenedor que pertenece a la imagen nginx de Docker.

Obtención de información detallada sobre las redes Docker

La docker inspect el comando no solo se limita a obtener información sobre imágenes y contenedores; también puede consultar redes. Las redes Docker permiten que los contenedores se comuniquen de diferentes maneras, como a través de una red puente (una red privada), una red host (una red pública) o una red superpuesta.

Conocer las redes de Docker es importante ya que le permite cambiar a otra red de Docker en cualquier momento según la necesidad de la aplicación al desconectarse y luego volver a conectarse.

Asumiendo que todavía estás en la terminal:

1. Ejecute el siguiente comando. La docker network ls El comando enumera todas las redes presentes en Docker. Necesitará el resultado de este comando para encontrar la ID de la red.

docker network ls

A continuación, pase una ID de red a docker inspect network dominio. Este comando devuelve diversa información sobre la red en particular, como se muestra a continuación.

docker inspect network 4748f122c987

1. El tipo de red.

2. La dirección de subred que usa la red.

3 y 4. Información resumida sobre cada contenedor que utiliza esta red en particular.

Comprender las plantillas Go de Docker y el Format Parámetro

Hasta ahora, ha aprendido a usar el comando de inspección de Docker sin usar ningún parámetro de opciones adicional. Pero si necesita manipular el formato de salida, considere usar el --format bandera. El --format El parámetro usa plantillas de Go para filtrar y mostrar la información devuelta desde docker inspect .

Se utilizan varias funciones junto con el indicador de formato, como unir, imprimir, tabla, etc. ¡Discutamos algunas de ellas!

Por ejemplo, tal vez desee unir algunos valores de la salida de un contenedor en particular. Si es así, el join el comando funciona bien. A continuación, verá que join El comando concatena cadenas juntas (nginx, -g, daemon off ) con cada elemento separado por un separador (, ).

docker inspect --format '{{join .Args " , "}}' container_id

¿Quizás le gustaría capitalizar un valor? Usa el upper comando.

docker inspect --format "{{upper .Name}}" container_id

Puede encontrar muchos ejemplos diferentes del uso del Format parámetro.

Encontrar el nombre de la imagen base de un contenedor Docker

En la sección anterior, vio cómo obtener una vista detallada de todas sus imágenes de Docker, incluidos los contenedores que usan esas imágenes. Pero, ¿qué sucede si ya conoce la ID de un contenedor y necesita encontrar rápidamente la imagen a partir de la cual se creó? Puede proporcionar el ID del contenedor a docker inspect .

Para encontrar el nombre de la imagen a partir de la cual se crea un contenedor en particular, ejecute el siguiente docker inspect dominio. El siguiente comando pasa el ID del contenedor (8f34d039fa3a en este caso) a docker inspect y usa el Format parámetro para devolver solo la image valor de la Config nodo en la salida JSON.

# 8f34d039fa3a is the container represented with ContainerID.
docker inspect --format='{{.Config.Image}}' 8f34d039fa3a

Puedes ver lo que la Config completa el nodo se ve a continuación y donde la Image proviene el nombre.

Encontrar la dirección IP, la dirección Mac y los enlaces de puerto de un contenedor

Aunque ahora sabe cómo encontrar la red que usa un contenedor, ¿cómo sabe qué dirección IP o dirección Mac y enlaces de puerto en esa red usa un contenedor? ¡Lo adivinaste! docker inspect .

Para restringir la dirección IP que usa un contenedor, pase la ID del contenedor a docker inspect dominio. Nuevamente, use el Format parámetro para filtrar el JSON no deseado para llegar exactamente a lo que está buscando.

Verás el Format el argumento del parámetro a continuación le dice a docker inspect solo para devolver el valor incrustado dentro de NetworkSettingsNetworksIPAddress Atributo JSON usando el range atributo. El atributo de rango le permite iterar sobre una matriz, configurando el . valor a cada elemento de la matriz.

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

Verá la principal NetworkSettings debajo del nodo y donde la IPAddress el valor está anidado.

Del mismo modo, para encontrar la dirección MAC del contenedor, use docker inspect comando contenedor como se muestra a continuación.

Nuevamente, verá que el Format El argumento del parámetro a continuación usa el range atributo pero esta vez, busque la dirección Mac del contenedor comprobando NetworkSettingsNetworksMac address .

docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' 3dd206041249

Finalmente, para verificar todos los enlaces de puerto de un contenedor, ejecute el siguiente docker inspect dominio. Verás el Format El argumento del parámetro a continuación usa el range atributo para encontrar los enlaces de puerto del contenedor comprobando NetworkSettingsHostPort .

One debe saber acerca de los enlaces de puerto porque si algún puerto ya está en uso, no debe volver a usarse; de lo contrario, arrojará un mensaje de error que indica que el puerto ya está asignado.

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

Obtención de una vista detallada del volumen de Docker usando Docker Inspect

Hasta ahora, aprendió cómo encontrar información detallada sobre las imágenes, los contenedores y las redes, pero no aprendió sobre el almacenamiento. Cambiemos eso.

Para garantizar que el tutorial tenga al menos un volumen montado adjunto a un contenedor, primero creemos un contenedor y montemos un volumen de almacenamiento.

Si ya tiene un volumen de almacenamiento montado en un contenedor, puede omitir esta parte.

El siguiente comando crea un nuevo contenedor Docker llamado my_container , expone el puerto 80 al host (-p 80:80 ), monta un volumen basado en el /var/container_dir del host directorio llamado mounted_val (-v mounted_vol:/var/container_dir ) usando nginx imagen.

docker run --name my_container -p 80:80 -v mounted_vol:/var/container_dir nginx

Ahora que tiene un volumen montado en un contenedor, proporcione el nombre del volumen a docker volume inspect . Observe a continuación que el comando devuelve la salida JSON y solo proporciona información sobre el volumen de almacenamiento montado.

docker volume inspect mounted_vol

Conclusión

Ahora debería poder usar docker inspect Comando en muchas situaciones diferentes, desde consultar información sobre imágenes, contenedores, redes y almacenamiento.

¿Cómo planeas usar docker inspect? para consultar información sobre su propio entorno Docker?


Docker
  1. Instale ModSecurity con Apache en un contenedor Docker

  2. Instale el servidor Wireguard VPN con Docker

  3. Configurar Nextcloud con Redis usando Docker

  4. Cómo instalar Jenkins con Docker

  5. Cómo implementar microservicios con Docker

Cómo configurar MySQL con Docker en Linux

De Docker Compose a Kubernetes con Podman

Cómo reemplazar Docker con Podman en una Mac

Implementación de una pila EFK con Docker

Cómo obtener la dirección IP del contenedor Docker

Cómo configurar espacios de nombres de red en contenedores Docker