Rendre les services réseau disponibles dans Docker

Docker 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 combinaison IP:port à la fois
    • Par exemple, 10.1.2.3:80 signifie écouter sur 10.1.2.3 au port 80.
  • Supposez que vous déboguiez différentes versions d'un serveur Web qui écoute sur le port 80
    • Vous ne pourriez exécuter qu'une instance à la fois puisqu'il n'écoute que sur ce port
Docker intermédiaire

Services conteneurisés

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

Mappage de ports

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

Exemple de mappage de ports

Docker 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 intermédiaire

Passons à la pratique !

Docker intermédiaire

Preparing Video For Download...