Netshoot docker
| Fiche express | |
|---|---|
| Type | Image de diagnostic réseau pour conteneurs |
| Image | nicolaka/netshoot
|
| Contenu | curl, dig, tcpdump, iproute2, nmap...
|
| Voir aussi | Docker plugins |
netshoot est une image conteneur regroupant une large panoplie d'outils de diagnostic réseau (résolution DNS, capture de paquets, trace de routes, tests de ports...) absents des images applicatives minimalistes. Elle sert à déboguer, depuis l'extérieur ou de l'intérieur, la connectivité entre conteneurs sans avoir à installer ces outils dans les images de production.
Débogage depuis un réseau tiers
Créer un réseau et un conteneur cible à diagnostiquer :
docker network create custom-net
docker run -d --name custom-net-nginx --network custom-net nginx
Lancer netshoot sur ce même réseau pour tester la résolution DNS et la connectivité par nom de service :
docker run --rm --network custom-net nicolaka/netshoot curl custom-net-nginx:80
Injection dans l'espace réseau d'un autre conteneur
Plutôt que de rejoindre le réseau (bridge) partagé, netshoot peut être attaché directement à l'espace de noms réseau d'un conteneur cible (--network container:<nom>) : il voit alors exactement la même pile réseau que lui, y compris localhost — utile pour diagnostiquer un conteneur depuis « l'intérieur » sans y installer d'outils :
docker run --rm --network container:custom-net-nginx nicolaka/netshoot curl localhost:80
Ce mécanisme fonctionne même pour un conteneur isolé du réseau (--network none), puisque netshoot en partage alors l'espace de noms réseau (vide) plutôt que de le rejoindre en tant que pair :
docker run -d --name none-net-nginx --network none nginx
docker run --rm --network container:none-net-nginx nicolaka/netshoot curl localhost:80