Summary
Dans la vidéo précédente, nous avons appris à exécuter un conteneur et à effectuer le mappage de ports pour y accéder via un navigateur web ou l’outil Curl. Dans cette vidéo, nous allons aborder le réseau des conteneurs, les adresses IP et les mappages de ports pour éviter les conflits.
Nombre limité d’adresses IP
L’adresse IP Version 4, représentée sous la forme quelque chose point quelque chose point quelque chose point quelque chose, dispose d’un nombre limité d’adresses IP. Par conséquent, les conteneurs n’auront pas d’adresses IP publiques mais disposeront plutôt d’adresses IP pour leurs services comme les serveurs web, les serveurs de bases de données ou les serveurs de messagerie.
Mappage de ports
Les conteneurs vont exposer leurs services sur la base d’un port par port, et nous allons travailler avec des numéros de port pour éviter les conflits. Pour connaître le mappage de ports, nous pouvons utiliser [docker](/blog/en/kubernetes/should-a-docker-container-run-as-root-or-user) ps ou [docker](/blog/en/kubernetes/can-docker-connect-to-database) port si nous connaissons l’identifiant du conteneur.
Par exemple, en utilisant la commande [docker](/blog/en/kubernetes/how-do-i-connect-a-docker-bridged-container-to-the-outside-of-the-host) port <container_id>, nous pouvons découvrir le numéro de port hôte pour un conteneur qui écoute sur le port 8000.
$ docker port 302d30 8000/tcp -> 0.0.0.0:8888
Attribuer un numéro de port personnalisé
Nous pouvons attribuer un numéro de port personnalisé en spécifiant le flag -p suivi du mappage. Par exemple, [docker](/blog/en/kubernetes/how-to-use-local-docker-images-with-minikube) [run](/blog/en/kubernetes/how-to-run-minikube-in-a-virtual-machine-ubuntu-vm-vt-x-amd-v) -d -p 88:8000 <image_name> va mapper le port hôte 88 vers le port conteneur 8000.
$ docker run -d -p 88:8000 <image_name>
Nous pouvons vérifier le mappage en utilisant la commande [docker](/blog/en/kubernetes/docker/convert-docker-compose-to-kubernetes) ps.
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 302d30 <image_name> "python app.py" 1 minute ago Up 1 minute 0.0.0.0:8888->8000/tcp gracious_mendeleev
Trouver l’adresse IP
Nous pouvons trouver l’adresse IP d’un conteneur en utilisant la commande [docker](/blog/en/building-microservices-with-docker-creating-a-product-service) inspect avec l’option format.
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container_id>
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' 302d30 172.17.0.2
Cependant, il faut se rappeler que les conteneurs ne devraient pas avoir d’adresses IP publiques. À la place, nous devrions utiliser le mappage de ports pour accéder aux services.
Conclusion
En conclusion, nous pouvons publier un serveur web à l’intérieur d’un conteneur Docker, le rendre public et y accéder depuis différents ordinateurs en maîtrisant le mappage de ports, le numéro de port à utiliser pour accéder au service et en exécutant quelques commandes.