Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En DevOps Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Visualisez et gérez les connexions réseau établies par un conteneur Docker.

Souvent, lorsque nous travaillons avec un conteneur Docker, nous avons besoin de voir les connexions réseau utilisées par le conteneur à des fins de débogage initial ou de dépannage. Vous pouvez vouloir voir quelle IP écoute sur un port ou combien de connexions sont actuellement actives dans le conteneur.

Étant donné qu’un Docker est un environnement isolé, l’exécution de netstat sur un serveur ne vous donnera pas les connexions réseau du conteneur. Au lieu de cela, vous devez soit entrer dans un conteneur pour exécuter le netstat, soit l’exécuter à distance.

Voyons les deux options…

# 1. Entrer dans un conteneur Docker pour exécuter netstat

Pour commencer, trouvez l’ID du conteneur que vous voulez dépanner.

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ce7cfb9be37 nginx "/docker-entrypoint...." Il y a 2 minutes Up 2 minutes 0.0.0.0:80->80/tcp web-server
4ab8551671d7 nginx "/docker-entrypoint...." Il y a 6 minutes Up 6 minutes 80/tcp vigilant_ganguly
$

Ici, celui que je veux dépanner est le conteneur avec l’ID 0ce7cfb9be37. Maintenant, pour obtenir une session shell (bash) de ce conteneur, utilisez :

$ docker exec -it 0ce7cfb9be37 bash

Cela devrait vous amener à une invite bash à l’intérieur du conteneur.

root@0ce7cfb9be37:/#

Vous pouvez installer le paquetage netstat pour rechercher les connexions réseau établies. Par défaut, ces utilitaires peuvent ne pas être disponibles dans le conteneur.

Pour l’installer, utilisez donc

apt update
apt install net-tools

Maintenant, nous pouvons utiliser la commande netstat comme d’habitude.

# netstat -an

Résultat :

Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale Adresse étrangère État
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 172.17.0.3:80 223.233.99.46:64429 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4811 ESTABLISHED
tcp 0 0 172.17.0.3:80 223.233.99.46:64430 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4810 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
Sockets de domaines UNIX actifs (serveurs et établis)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 35748
unix 3 [ ] STREAM CONNECTED 35749

Comme vous pouvez le voir dans la sortie ci-dessus, les connexions établies avec leurs adresses de source et de destination sont listées. Pour voir les processus à l’écoute sur les ports, vous pouvez utiliser :

# netstat -tulnp

Résultat :

Connexions Internet actives (serveurs uniquement)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0.0.0.0:80 0.0.0:* LISTEN 1/nginx : master pro
tcp6 0 0 :::80 :::* LISTEN 1/nginx : master pro

# 2. Exécuter netstat sans entrer dans le conteneur

Tout d’abord, nous devons obtenir l’ID du conteneur avec la commande docker ps.

[root@relicflare-shared-services ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5db9a01d4a8 postgres:13.1-alpine "docker-entrypoint.s..." il y a 9 jours Up 9 days 0.0.0.0:5432->5432/tcp relicflare_server_postgres
[root@relicflare-shared-services ~]#

Ensuite, exécutez la commande docker comme ci-dessous pour connaître toutes les connexions établies pour le conteneur.

docker exec e5db9a01d4a8 netstat |grep ESTABLISHED 

Le résultat ressemblerait à ce qui suit.

[root@relicflare-shared-services ~]# docker exec e5db9a01d4a8 netstat | grep ESTABLISHED
tcp 0 0 e5db9a01d4a8:postgresql 161.35.XXX.XXX:49128 ESTABLISHED 
udp 0 0 localhost:48818 localhost:48818 ESTABLISHED 
[root@relicflare-shared-services ~]# 

L’idée est donc d’exécuter la commande netstat en même temps que la commande docker exec.

Conclusion

Maintenant que vous avez les détails de connexion nécessaires, vous pouvez continuer votre dépannage en regardant plus loin dans les logs de docker et de processus.

  • Abhishek Nair
    Auteur
Merci à nos sponsors
Plus de lectures sur DevOps
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus