24 Nov 2015, 23:18

netstat sur Debian 8 Jessie

Lorsqu’on utilise docker pour développer, on ne sait pas toujours sur quel OS on va tomber. Tout dépend du choix du créateur de l’image : on tombera parfois sur du Debian, parfois sur du Ubuntu, parfois encore sur du CentOS.

En revanche je me suis rendu compte que la plupart (la totalité ?) des images officielles proposées par Docker étaient quant à elles basées sur Debian. Même si parfois elles diffèrent de version (exemple avec l’image Redis sous Wheezy et l’image RabbitMQ sous Jessie), on reste quand même sur du Debian. Et l’image officielle Python ne fait pas exception à cette règle.

Du coup pas de netstat de base pour tester si votre gunicorn écoute sur le bon port ou s’il est accessible sur localhost ou sur 0.0.0.0 (open bar).

Alors si comme moi vous avez bêtement tenté de rechercher le paquet netstat et que vous êtes tombé sur ça :

ncrocfer@home:~$ docker run -it python:3.4 /bin/bash
root@caa036eb3980:/# apt-get update
...
...
root@caa036eb3980:/# apt-cache search netstat
libparse-netstat-perl - module to parse the output of the "netstat" command
netstat-nat - tool that display NAT connections
root@caa036eb3980:/#

Eh bien sachez que l’outil se situe dans le paquet net-tools :

root@caa036eb3980:/# apt-get install net-tools

Vous pouvez maintenant lancer vos services et vérifiez leurs connexions :

root@caa036eb3980:/# pip install flask
root@caa036eb3980:/# cat > app.py <<- EOM
> from flask import Flask
> app = Flask(__name__)
>
> @app.route("/")
> def hello():
>     return "Hello World!"
>
> if __name__ == "__main__":
>     app.run()
> EOM
root@caa036eb3980:/# python app.py &
[1] 104
root@caa036eb3980:/# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      -
root@caa036eb3980:/#