Recherche…


Syntaxe

  • docker inspect [OPTIONS] CONTENEUR | IMAGE [CONTENEUR | IMAGE ...]

Obtenir des informations sur le conteneur

Pour obtenir toutes les informations relatives à un conteneur, vous pouvez exécuter:

docker inspect <container>

Obtenir des informations spécifiques à partir d'un conteneur

Vous pouvez obtenir des informations spécifiques à partir d'un conteneur en exécutant:

docker inspect -f '<format>' <container>

Par exemple, vous pouvez obtenir les paramètres réseau en exécutant:

docker inspect -f '{{ .NetworkSettings }}' <container>

Vous pouvez également obtenir uniquement l'adresse IP:

docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>

Le paramètre -f signifie le format et recevra un gabarit comme entrée pour formater ce qui est attendu, mais cela n'apportera pas un beau retour, alors essayez:

docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}

le mot-clé json apportera le retour en tant que JSON.

Donc pour finir, un petit truc est d'utiliser Python pour formater la sortie JSON:

docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool

Et voilà, vous pouvez interroger tout ce qui se trouve sur le docker et le rendre joli dans votre terminal.

Il est également possible d'utiliser un utilitaire appelé " jq " pour aider à traiter docker inspect sortie de la commande.

docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]

La commande ci-dessus renvoie la sortie suivante:

[
  "172.17.0.1"
]

Cette sortie est en fait une liste contenant un élément. Parfois, docker inspect affiche une liste de plusieurs éléments et vous souhaiterez peut-être faire référence à un élément spécifique. Par exemple, si Config.Env contient plusieurs éléments, vous pouvez vous référer au premier élément de cette liste à l'aide de l' index :

docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>

Le premier élément est indexé à zéro, ce qui signifie que le deuxième élément de cette liste est à l'index 1 :

docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>

En utilisant len il est possible d’obtenir le nombre d’éléments de la liste:

docker inspect --format ‘{{ len .Config.Env }}’ <container>

Et en utilisant des nombres négatifs, il est possible de se référer au dernier élément de la liste:

docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>

Certains docker inspect l' information se présente comme un dictionnaire de clé: valeur, voici un extrait d'un docker inspect d'un jess / spotify conteneur en cours d' exécution

"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": {} },

donc je reçois les valeurs de toute la section 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[] }

mais aussi un seul champ, comme la valeur de Config.Image

docker inspect -f '{{index (.Config) "Image" }}' 825

jess/spotify

ou Config.Cmd

docker inspect -f '{{.Config.Cmd}}' 825

[-stylesheet=/home/spotify/spotify-override.css]

Inspecter une image

Pour inspecter une image, vous pouvez utiliser l'ID de l'image ou le nom de l'image, composé du référentiel et de la balise. Dites, vous avez l'image de base CentOS 6:

➜  ~ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos6             cf2c3ece5e41        2 weeks ago         194.6 MB

Dans ce cas, vous pouvez exécuter l'une des opérations suivantes:

  • ➜ ~ docker inspect cf2c3ece5e41
  • ➜ ~ docker inspect centos:centos6

Ces deux commandes vous donneront toutes les informations disponibles dans un tableau 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"
            ]
        }
    }
]

Impression des informations spécifiques

docker inspect les --format Go via l'option --format . Cela permet une meilleure intégration dans les scripts, sans recourir aux outils traditionnels pipes / sed / grep.

Imprimer un IP interne du conteneur :

docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7786807d8084

Ceci est utile pour l'accès direct au réseau de la configuration automatique des équilibreurs de charge.

Imprimer un conteneur PID init :

docker inspect --format '{{ .State.Pid }}' 7786807d8084

Ceci est utile pour une inspection plus approfondie via /proc ou des outils tels que strace .

Formations avancées :

docker inspect --format 'Container {{ .Name }} listens on {{ .NetworkSettings.IPAddress }}:{{ range $index, $elem := .Config.ExposedPorts }}{{ $index }}{{ end }}' 5765847de886 7786807d8084

Va sortir:

Container /redis listens on 172.17.0.3:6379/tcp
Container /api listens on 172.17.0.2:4000/tcp

Déboguer les journaux de conteneur à l'aide de docker inspect

docker inspect commande docker inspect peut être utilisée pour déboguer les journaux de conteneur.

La stdout et le stderr du conteneur peuvent être vérifiés pour déboguer le conteneur, dont l'emplacement peut être obtenu à l'aide de docker inspect .

Commande: docker inspect <container-id> | grep Source

Il donne l'emplacement des conteneurs stdout et stderr.

Examen de stdout / stderr d'un conteneur en cours d'exécution

docker logs --follow <containerid>

Cela limite la sortie du conteneur en cours d'exécution. Ceci est utile si vous n'avez pas configuré de pilote de journalisation sur le démon docker.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow