Comment mapper un port personnalisé d'un conteneur Docker vers l'hôte

DockerBeginner
Pratiquer maintenant

Introduction

Docker est une plateforme de conteneurisation populaire qui vous permet d'emballer et de déployer des applications dans un environnement cohérent et isolé. L'une des fonctionnalités clés de Docker est la possibilité de mapper des ports d'un conteneur vers la machine hôte, ce qui vous permet d'accéder à vos applications conteneurisées depuis l'extérieur. Dans ce tutoriel, nous explorerons comment mapper un port personnalisé d'un conteneur Docker vers l'hôte, vous fournissant les connaissances nécessaires pour gérer et accéder efficacement à vos applications basées sur Docker.

Introduction à la cartographie des ports Docker

Docker est une plateforme de conteneurisation populaire qui permet aux développeurs d'emballer leurs applications et leurs dépendances dans des environnements isolés appelés conteneurs. Une des fonctionnalités clés de Docker est la possibilité de mapper des ports de la machine hôte vers le conteneur, permettant la communication entre le conteneur et le monde extérieur.

Lorsqu'un conteneur Docker est exécuté, il fonctionne généralement sur son propre réseau interne et écoute sur un port spécifique. Pour accéder à l'application exécutée à l'intérieur du conteneur, il est nécessaire de mapper le port du conteneur vers un port sur la machine hôte.

La cartographie des ports est essentielle pour divers cas d'utilisation, tels que :

  1. Applications Web : Lorsqu'un serveur web est exécuté dans un conteneur Docker, il est nécessaire de mapper le port du conteneur (par exemple, 80 ou 8080) vers un port sur la machine hôte afin que les utilisateurs puissent accéder à l'application via un navigateur web.

  2. Bases de données : Lorsqu'un serveur de base de données est exécuté dans un conteneur Docker, il est nécessaire de mapper le port du conteneur (par exemple, 3306 pour MySQL) vers un port sur la machine hôte afin que d'autres applications puissent se connecter à la base de données.

  3. Microservices : Dans une architecture de microservices, chaque service peut s'exécuter dans son propre conteneur Docker. La cartographie des ports est nécessaire pour permettre la communication entre les différents services et le monde extérieur.

En comprenant le concept de cartographie des ports Docker, vous pouvez gérer efficacement la connectivité réseau de vos applications conteneurisées et vous assurer qu'elles sont accessibles depuis la machine hôte ou d'autres clients réseau.

Cartographie d'un port personnalisé vers un conteneur Docker

Pour mapper un port personnalisé de la machine hôte vers un conteneur Docker, vous pouvez utiliser l'option -p ou --publish lors de l'exécution de la commande docker run.

La syntaxe de base est :

docker run -p <port_hôte>:<port_conteneur> <nom_image>

Voici un exemple :

docker run -p 8080:80 nginx

Dans cet exemple, le port 8080 de la machine hôte est mappé vers le port 80 à l'intérieur du conteneur Nginx. Cela signifie que lorsque vous accédez à http://localhost:8080 sur la machine hôte, vous pourrez accéder au serveur web Nginx exécuté dans le conteneur.

Vous pouvez également mapper plusieurs ports en spécifiant l'option -p plusieurs fois :

docker run -p 8080:80 -p 3306:3306 mysql

Ceci mappera le port 8080 de l'hôte vers le port 80 du conteneur, et le port 3306 de l'hôte vers le port 3306 du conteneur.

Si vous souhaitez mapper un port disponible aléatoire sur la machine hôte vers le conteneur, vous pouvez utiliser la syntaxe suivante :

docker run -p <port_conteneur> <nom_image>

Par exemple :

docker run -p 80 nginx

Dans ce cas, Docker assignera automatiquement un port disponible sur la machine hôte et le mappera au port 80 du conteneur.

Vous pouvez vérifier la cartographie des ports en exécutant la commande docker ps, qui affichera les ports mappés :

CONTAINER ID   IMAGE   COMMAND                  PORTS                 NAMES
abc123def456   nginx   "/docker-entrypoint.…"   0.0.0.0:8080->80/tcp   romantic_babbage

En comprenant comment mapper des ports personnalisés vers des conteneurs Docker, vous pouvez exposer efficacement vos applications conteneurisées au monde extérieur et permettre la communication entre le conteneur et la machine hôte ou d'autres clients réseau.

Cas d'utilisation et exemples pratiques

Exécution d'un serveur web

Supposons que vous ayez une application web exécutée dans un conteneur Docker qui écoute sur le port 80 à l'intérieur du conteneur. Pour rendre l'application accessible depuis la machine hôte, vous pouvez mapper le port 80 du conteneur vers un port personnalisé sur l'hôte, tel que 8080 :

docker run -p 8080:80 my-web-app

Maintenant, vous pouvez accéder à l'application web en visitant http://localhost:8080 sur la machine hôte.

Exposition d'un serveur de base de données

Si vous avez un serveur de base de données (par exemple, MySQL) exécuté dans un conteneur Docker, vous pouvez mapper le port de base de données du conteneur (par exemple, 3306) vers un port personnalisé sur l'hôte :

docker run -p 3306:3306 mysql

Ceci permettra à d'autres applications exécutées sur la machine hôte de se connecter au serveur de base de données MySQL à l'intérieur du conteneur en utilisant le port 3306 de l'hôte.

Mappage de plusieurs ports

Dans un scénario plus complexe, vous pourriez avoir une application multi-couches où différents composants (par exemple, serveur web, serveur d'application, base de données) s'exécutent dans des conteneurs Docker distincts. Vous pouvez mapper plusieurs ports pour exposer ces composants :

docker run -p 8080:80 -p 8000:8000 -p 3306:3306 my-app

Ceci mapperait le port 8080 de l'hôte vers le port 80 du conteneur (serveur web), le port 8000 de l'hôte vers le port 8000 du conteneur (serveur d'application) et le port 3306 de l'hôte vers le port 3306 du conteneur (serveur de base de données).

Utilisation du mappage de port aléatoire

Si vous ne souhaitez pas spécifier un port spécifique sur la machine hôte, vous pouvez laisser Docker assigner automatiquement un port disponible :

docker run -p 80 my-web-app

Dans ce cas, Docker mappera le port 80 du conteneur vers un port disponible sur la machine hôte. Vous pouvez utiliser la commande docker ps pour voir le port assigné.

En comprenant ces cas d'utilisation et exemples pratiques, vous pouvez tirer pleinement parti des capacités de mappage de ports de Docker pour exposer vos applications et services conteneurisés au monde extérieur, permettant une communication et un accès transparent à vos applications.

Résumé

Dans ce tutoriel, vous avez appris à mapper un port personnalisé d'un conteneur Docker vers la machine hôte. En comprenant le processus de mappage de ports, vous pouvez désormais accéder à vos applications conteneurisées depuis l'hôte, ce qui vous permet d'interagir avec et de gérer plus efficacement vos services basés sur Docker. Les cas d'utilisation et exemples pratiques présentés dans ce guide vous aideront à appliquer ces concepts à vos propres projets et déploiements Docker.