Rendre des services réseau disponibles dans Docker

Docker : niveau intermédiaire

Mike Metzger

Data Engineering Consultant

Services réseau

  • Les services réseau écoutent sur un port donné
  • Un seul programme peut écouter sur une paire IP:port à la fois
    • Par exemple, 10.1.2.3:80 écoute sur l'IP 10.1.2.3, port 80.
  • Imaginez déboguer plusieurs versions d'un serveur web qui écoute sur le port 80
    • Vous ne pourriez exécuter qu'une seule instance à la fois puisqu'elle n'écoute que sur ce port
Docker : niveau intermédiaire

Services conteneurisés

  • Emballer l'application dans un conteneur permet à chaque conteneur d'écouter sur ce port (la paire IP:port diffère, chaque conteneur a une IP différente)
  • Vous pouvez exécuter plusieurs copies de conteneurs en parallèle
  • Mais comment accéder, depuis l'hôte, à la version de l'application dans le conteneur ?
Docker : niveau intermédiaire

Mappage de port

  • La solution : le mappage de ports, aussi appelé redirection/traduction de port
  • Il prend une connexion vers une IP:port et la redirige automatiquement vers une autre IP:port
  • Ici, on peut mapper un port libre de l'hôte vers le port 80 du/des conteneur(s)
  • Le moteur Docker peut le gérer automatiquement si on le configure

Exemple de mappage de port

Docker : niveau intermédiaire

Activer le mappage de ports

  • Pour activer le mappage de ports sur un conteneur, utilisez docker run avec l'option -p
  • -p <port hôte>:<port conteneur>
  • -p 5501:80
  • Vous pouvez répéter -p pour plusieurs ports
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
Docker : niveau intermédiaire

Passons à la pratique !

Docker : niveau intermédiaire

Preparing Video For Download...