Docker
Inspeccionando un contenedor corriendo
Buscar..
Sintaxis
- Docker inspeccionar [OPCIONES] CONTENEDOR | IMAGEN [CONTENEDOR | IMAGEN ...]
Obtener información del contenedor
Para obtener toda la información de un contenedor puede ejecutar:
docker inspect <container>
Obtener información específica de un contenedor
Puede obtener una información específica de un contenedor ejecutando:
docker inspect -f '<format>' <container>
Por ejemplo, puede obtener la configuración de red ejecutando:
docker inspect -f '{{ .NetworkSettings }}' <container>
También puede obtener solo la dirección IP:
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>
El parámetro -f significa formato y recibirá una plantilla Go como entrada para formatear lo que se espera, pero esto no traerá un hermoso retorno, así que intente:
docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}
la palabra clave json traerá la devolución como JSON.
Para terminar, un pequeño consejo es usar python para formatear la salida JSON:
docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool
Y listo, puedes consultar cualquier cosa en la ventana acoplable inspeccionar y hacer que se vea bonita en tu terminal.
También es posible usar una utilidad llamada " jq " para ayudar a procesar la salida de comandos de la docker inspect
.
docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]
El comando anterior devolverá la siguiente salida:
[
"172.17.0.1"
]
Esta salida es en realidad una lista que contiene un elemento. A veces, la docker inspect
muestra una lista de varios elementos y es posible que desee consultar un elemento específico. Por ejemplo, si Config.Env
contiene varios elementos, puede referirse al primer elemento de esta lista usando el index
:
docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>
El primer elemento se indexa en cero, lo que significa que el segundo elemento de esta lista está en el índice 1
:
docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>
Usando len
es posible obtener el número de elementos de la lista:
docker inspect --format ‘{{ len .Config.Env }}’ <container>
Y usando números negativos, es posible referirse al último elemento de la lista:
docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>
Algunos datos de docker inspect
vienen como un diccionario de clave: valor, aquí hay un extracto de una docker inspect
de un contenedor de jess / spotify en ejecución
"Config": { "Hostname": "8255f4804dde", "Domainname": "", "User": "spotify", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "DISPLAY=unix:0", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/home/spotify" ], "Cmd": [ "-stylesheet=/home/spotify/spotify-override.css" ], "Image": "jess/spotify", "Volumes": null, "WorkingDir": "/home/spotify", "Entrypoint": [ "spotify" ], "OnBuild": null, "Labels": {} },
Así que obtengo los valores de toda la sección Config.
docker inspect -f '{{.Config}}' 825
{8255f4804dde spotify false false false map[] false false false [DISPLAY=unix:0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/home/spotify] [-stylesheet=/home/spotify/spotify-override.css] false jess/spotify map[] /home/spotify [spotify] false [] map[] }
sino también un solo campo, como el valor de Config.Image
docker inspect -f '{{index (.Config) "Image" }}' 825
jess/spotify
o Config.Cmd
docker inspect -f '{{.Config.Cmd}}' 825
[-stylesheet=/home/spotify/spotify-override.css]
Inspeccionar una imagen
Para inspeccionar una imagen, puede usar la ID de la imagen o el nombre de la imagen, que consiste en el repositorio y la etiqueta. Digamos que tienes la imagen base de CentOS 6:
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos6 cf2c3ece5e41 2 weeks ago 194.6 MB
En este caso, puede ejecutar cualquiera de los siguientes:
-
➜ ~ docker inspect cf2c3ece5e41
-
➜ ~ docker inspect centos:centos6
Ambos comandos le darán toda la información disponible en una matriz JSON:
[
{
"Id": "sha256:cf2c3ece5e418fd063bfad5e7e8d083182195152f90aac3a5ca4dbfbf6a1fc2a",
"RepoTags": [
"centos:centos6"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-07-01T22:34:39.970264448Z",
"Container": "b355fe9a01a8f95072e4406763138c5ad9ca0a50dbb0ce07387ba905817d6702",
"ContainerConfig": {
"Hostname": "68a1f3cfce80",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) CMD [\"/bin/bash\"]"
],
"Image": "sha256:cdbcc7980b002dc19b4d5b6ac450993c478927f673339b4e6893647fe2158fa7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"build-date": "20160701",
"license": "GPLv2",
"name": "CentOS Base Image",
"vendor": "CentOS"
}
},
"DockerVersion": "1.10.3",
"Author": "https://github.com/CentOS/sig-cloud-instance-images",
"Config": {
"Hostname": "68a1f3cfce80",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "sha256:cdbcc7980b002dc19b4d5b6ac450993c478927f673339b4e6893647fe2158fa7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"build-date": "20160701",
"license": "GPLv2",
"name": "CentOS Base Image",
"vendor": "CentOS"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 194606575,
"VirtualSize": 194606575,
"GraphDriver": {
"Name": "aufs",
"Data": null
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:2714f4a6cdee9d4c987fef019608a4f61f1cda7ccf423aeb8d7d89f745c58b18"
]
}
}
]
Impresión de informaciones específicas.
docker inspect
admite las plantillas Go a través de la opción --format
. Esto permite una mejor integración en los scripts, sin tener que recurrir a las herramientas tradicionales pipe / sed / grep.
Imprima una IP interna del contenedor :
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7786807d8084
Esto es útil para el acceso directo a la red de la configuración automática de los equilibradores de carga.
Imprimir un contenedor init PID :
docker inspect --format '{{ .State.Pid }}' 7786807d8084
Esto es útil para una inspección más profunda a través de /proc
o herramientas como strace
.
Formateo avanzado :
docker inspect --format 'Container {{ .Name }} listens on {{ .NetworkSettings.IPAddress }}:{{ range $index, $elem := .Config.ExposedPorts }}{{ $index }}{{ end }}' 5765847de886 7786807d8084
Saldrá:
Container /redis listens on 172.17.0.3:6379/tcp
Container /api listens on 172.17.0.2:4000/tcp
Depuración de los registros de contenedores utilizando la ventana acoplable inspeccionar
docker inspect
comando docker inspect
se puede usar para depurar los registros del contenedor.
El stdout y el stderr del contenedor se pueden verificar para depurar el contenedor, cuya ubicación se puede obtener mediante la docker inspect
.
Comando: docker inspect <container-id> | grep Source
Da la ubicación de los contenedores stdout y stderr.
Examinar stdout / stderr de un contenedor en ejecución
docker logs --follow <containerid>
Esto sigue la salida del contenedor en ejecución. Esto es útil si no configuró un controlador de registro en el daemon docker.