GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Mettre une loupe sur Docker avec Docker Inspect

Si vous recherchez une vue détaillée de tous les principaux composants de Docker à partir d'images Docker, de conteneurs, etc., la commande docker inspect est faite pour vous.

Dans ce didacticiel, vous apprendrez à devenir un détective pour découvrir des informations détaillées sur de nombreux composants Docker pour le débogage, le dépannage ou simplement votre simple curiosité.

Commençons !

Prérequis

Si vous souhaitez suivre étape par étape, assurez-vous d'avoir les éléments suivants :

  • Docker :ce didacticiel utilise Docker v19.03.11 sur Ubuntu 18.04.5 LTS.
  • Toute image Docker téléchargée et disponible. Ce didacticiel utilise la dernière image NGINX Docker disponible sur Docker Hub.
  • Au moins un conteneur s'exécutant sur l'hôte Docker.

Inspecter les images Docker avec Docker Inspect

L'Docker Inspect peut fournir des informations sur de nombreux composants Docker différents, mais commençons d'abord par l'un des composants les plus populaires ; images. Si vous avez téléchargé une image, comment recherchez-vous ensuite des informations sur cette image ? Découvrons.

En supposant que vous avez au moins une image sur votre hôte Docker, utilisez le inspect commande pour interroger cette image. La commande ci-dessous suppose que vous avez une image appelée nginx sur votre hébergeur.

docker image inspect nginx

Une fois exécutée, la commande ci-dessus renvoie une multitude d'informations via JSON sur cette image particulière. Certains attributs notables sont :

  1. La balise d'image.
  2. L'heure à laquelle l'image a été créée.
  3. Le nom d'hôte du conteneur associé à l'image Docker nginx.
  4. Les ports réseau que le conteneur met à la disposition du réseau extérieur.
  5. Vous remarquerez également le(s) volume(s) attaché(s) au conteneur qui appartient à l'image Docker nginx.

Obtenir des informations détaillées sur les réseaux Docker

L'docker inspect la commande n'est pas seulement reléguée à la saisie d'informations sur les images et les conteneurs ; il peut également interroger les réseaux. Les réseaux Docker permettent aux conteneurs de communiquer de différentes manières, par exemple via un réseau pont (un réseau privé), un réseau hôte (un réseau public) ou un réseau superposé.

Connaître les réseaux Docker est important car cela vous permet de basculer vers un autre réseau Docker à tout moment selon les besoins de l'application en vous déconnectant puis en vous reconnectant.

En supposant que vous êtes toujours sur le terminal :

1. Exécutez la commande ci-dessous. Le docker network ls La commande liste tous les réseaux présents dans le Docker. Vous aurez besoin de la sortie de cette commande pour trouver l'ID du réseau.

docker network ls

Ensuite, transmettez un ID de réseau au docker inspect network commande. Cette commande renvoie diverses informations sur le réseau particulier, comme indiqué ci-dessous.

docker inspect network 4748f122c987

1. Le type de réseau.

2. L'adresse de sous-réseau utilisée par le réseau.

3 et 4. Informations récapitulatives sur chaque conteneur utilisant ce réseau particulier.

Comprendre les modèles Go de Docker et le Format Paramètre

Jusqu'à présent, vous avez appris à utiliser la commande Docker inspect sans utiliser de paramètres d'options supplémentaires. Mais si vous avez besoin de manipuler le format de sortie, pensez à utiliser le --format drapeau. Le --format Le paramètre utilise des modèles Go pour filtrer et afficher les informations renvoyées par docker inspect .

Diverses fonctions sont utilisées avec l'indicateur de format, telles que join, println, table, etc. Discutons-en quelques-unes !

Par exemple, vous souhaitez peut-être joindre certaines valeurs à partir de la sortie d'un conteneur particulier. Si c'est le cas, le join la commande fonctionne bien. Ci-dessous, vous verrez que le join la commande concatène les chaînes ensemble (nginx, -g, daemon off ) avec chaque élément séparé par un séparateur (, ).

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

Peut-être souhaitez-vous capitaliser une valeur ? Utilisez le upper commande.

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

Vous pouvez trouver de nombreux exemples différents d'utilisation du Format paramètre.

Rechercher le nom de l'image de base d'un conteneur Docker

Dans la section précédente, vous avez vu comment obtenir une vue détaillée de toutes vos images Docker, y compris les conteneurs utilisant ces images. Mais que se passe-t-il si vous connaissez déjà un ID de conteneur et avez besoin de trouver rapidement l'image à partir de laquelle il a été créé ? Vous pouvez fournir l'ID du conteneur à docker inspect .

Pour trouver le nom de l'image à partir de laquelle un conteneur particulier est construit, exécutez le docker inspect ci-dessous commande. La commande ci-dessous transmet l'ID du conteneur (8f34d039fa3a dans ce cas) à docker inspect et utilise le Format paramètre pour ne renvoyer que l'image valeur de la Config nœud dans la sortie JSON.

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

Vous pouvez voir ce que l'ensemble de la Config le nœud ressemble à ci-dessous et où l'Image nom vient.

Rechercher l'adresse IP, l'adresse MAC et les liaisons de port d'un conteneur

Bien que vous sachiez maintenant comment trouver le réseau utilisé par un conteneur, comment savez-vous quelle adresse IP ou adresse Mac, et les liaisons de port sur ce réseau, un conteneur utilise ? Tu l'as deviné! docker inspect .

Pour affiner l'adresse IP utilisée par un conteneur, transmettez l'ID du conteneur à docker inspect commande. Encore une fois, utilisez le Format paramètre pour filtrer le JSON indésirable afin d'obtenir exactement ce que vous recherchez.

Vous verrez le Format l'argument de paramètre ci-dessous indique docker inspect uniquement pour renvoyer la valeur intégrée dans les NetworkSettingsNetworksIPAddress Attribut JSON utilisant la range attribut. L'attribut Range vous permet d'itérer sur un tableau, en définissant le . valeur à chaque élément du tableau.

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

Vous verrez les principaux NetworkSettings nœud ci-dessous et où l'IPAddress la valeur est imbriquée.

De même, pour trouver l'adresse MAC du conteneur, utilisez docker inspect commande conteneur comme indiqué ci-dessous.

Encore une fois, vous verrez que le Format l'argument de paramètre ci-dessous utilise la range mais cette fois, trouvez l'adresse Mac du conteneur en cochant NetworkSettingsNetworksMac address .

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

Enfin, pour vérifier toutes les liaisons de port d'un conteneur, exécutez le docker inspect ci-dessous commande. Vous verrez le Format l'argument de paramètre ci-dessous utilise la range attribut pour trouver les liaisons de port du conteneur en vérifiant NetworkSettingsHostPort .

One doit connaître les liaisons de port car si un port est déjà utilisé, il ne doit pas être réutilisé ; sinon, il lancera un message d'erreur indiquant que le port est déjà alloué.

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

Obtenir une vue détaillée du volume Docker à l'aide de Docker Inspect

Jusqu'à présent, vous avez appris à trouver des informations détaillées sur les images, les conteneurs et la mise en réseau, mais vous n'avez pas appris le stockage. Changeons cela.

Pour vous assurer que le didacticiel comporte au moins un volume monté attaché à un conteneur, créons d'abord un conteneur et montons un volume de stockage.

Si vous avez déjà un volume de stockage monté sur un conteneur, vous pouvez ignorer cette partie.

La commande ci-dessous crée un nouveau conteneur Docker appelé my_container , expose le port 80 à l'hôte (-p 80:80 ), monte un volume basé sur le /var/container_dir de l'hôte répertoire appelé mount_val (-v mounted_vol:/var/container_dir ) en utilisant le nginx photo.

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

Maintenant que vous avez un volume monté sur un conteneur, fournissez le nom du volume à docker volume inspect . Notez ci-dessous que la commande renvoie une sortie JSON, fournissant uniquement des informations sur le volume de stockage monté.

docker volume inspect mounted_vol

Conclusion

Vous devriez maintenant pouvoir utiliser le docker inspect commande dans de nombreuses situations différentes, depuis la recherche d'informations sur les images, les conteneurs, la mise en réseau et le stockage.

Comment comptez-vous utiliser docker inspect demander des informations sur votre propre environnement Docker ?


Docker
  1. Installer ModSecurity avec Apache dans un conteneur Docker

  2. Installer le serveur VPN Wireguard avec Docker

  3. Configurer Nextcloud avec Redis à l'aide de Docker

  4. Comment installer Jenkins avec Docker

  5. Comment utiliser la commande Docker Inspect

Comment configurer MySQL avec Docker sous Linux

De Docker Compose à Kubernetes avec Podman

Comment remplacer Docker par Podman sur un Mac

Déployer une pile EFK avec Docker

Comment obtenir l'adresse IP du conteneur Docker

Comment configurer les espaces de noms réseau dans les conteneurs Docker