Le mappage de port

A la découverte de Docker partie 3

Liaison

Lorsque que je vais lancer un serveur web comme nginx par exemple, il va rendre les pages web sur le port 80, mais seulement à l’intérieur du conteneur. Je n’y aurais pas accès car c’est totalement isolé, le conteneur a son propre réseau. Afin de pouvoir accéder aux pages web, je vais utiliser l’option -p qui va me permettre de spécifier le port de ma machine et lui dire vers quel port du conteneur je veux faire la liaison. De cette façon, je vais pouvoir accéder aux pages web via mon navigateur.

Voilà un exemple qui permet d’ouvrir le port 80 du conteneur sur le port 9001 de ma machine.

docker container run -d -p 9001:80 nginx

Et maintenant si je vais sur l’URL http://localhost:9001/ dans mon navigateur, je peux voir la page d’accueil de nginx.

Contrôle des ports

Grâce à la commande suivante, je peux voir une colonne « PORTS » qui m’indique sur quel port de ma machine est exposé un conteneur.

docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
828bbc8ba775        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 2 minutes        0.0.0.0:9001->80/tcp   happy_greider

Il existe aussi une commande pour obtenir les données de port d’un conteneur spécifique.

docker port 828bbc8ba775

La notation est inversée (par rapport à un ls), mais elle est à mon sens, un peu plus juste.

80/tcp -> 0.0.0.0:9001

Expérimentation et problème de port

Lors de mes tests, j’ai ouvert et fermé une bonne cinquantaine de conteneurs et au bout d’un moment je ne pouvais plus lancer de serveur web sur le port 9001 alors qu’il était disponible. Pour résoudre ce problème j’ai dû relancer Docker.

19/01/2019

Yann Vangampelaere - nouslesdevs -

Sinon jete un coup d’oeil aux autres catégories

Ma boîte aux lettres

Tu veux me demander quelque chose ?