Summary
Docker inspecter et jq
Ce n’est pas tant une astuce docker qu’une astuce jq. Si vous n’avez pas entendu parler de jq, c’est un excellent outil pour analyser JSON à partir de la ligne de commande. Cela en fait également un excellent outil pour voir ce qui se passe dans un conteneur au lieu d’avoir à utiliser le spécificateur –format
dont je ne me souviens jamais exactement comment utiliser :
Obtenir des informations sur le réseau :
$ docker inspect 4c45aea49180 | jq '.[].NetworkSettings.Networks'
La sortie est :
{
"bridge": {
"EndpointID": "ba1b6efba16de99f260e0fa8892fd4685dbe2f79cba37ac0114195e9fad66075",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
Récupère les arguments avec lesquels le conteneur a été démarré
$ docker inspect 4c45aea49180 | jq '.[].Args'
La sortie est :
[
"-server",
"-advertise",
"192.168.99.100",
"-bootstrap-expect",
"1"
]
Obtenez tous les volumes montés
$ docker inspect 4c45aea49180 | jq '.[].Mounts'
Production
[
{
"Name": "a8125ffdf6c4be1db4464345ba36b0417a18aaa3a025267596e292249ca4391f",
"Source": "/mnt/sda1/var/lib/docker/volumes/a8125ffdf6c4be1db4464345ba36b0417a18aaa3a025267596e292249ca4391f/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true
}
]
Et bien sûr, cela fonctionne également très bien pour interroger d’autres types d’API (docker-esque) qui produisent du JSON (par exemple, Marathon, Mesos, Consul, etc.). JQ fournit une API très complète pour accéder et traiter JSON. Plus d’informations peuvent être trouvées ici: https://stedolan.github.io/jq/