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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow