4.1 Concepts de base de la publication des ports
La publication des ports des conteneurs dans Docker permet aux services exécutés à l'intérieur des conteneurs d'être accessibles depuis le réseau externe ou depuis l'hôte. C'est une partie importante de la config des applications multi-conteneurs, car cela permet d'interagir avec des services comme des serveurs web, des bases de données et d'autres applis réseau. Dans cette conférence, on va voir comment publier les ports des conteneurs et configurer l'accès aux services.
Concepts de base de la publication des ports
- Mapping des ports: correspondance entre le port de l'hôte et le port du conteneur.
- Paramètre
-p/--publish
: utilisé pour définir le mapping des ports lors du lancement d'un conteneur. - Paramètre
-P/--publish-all
: affectation automatique des ports de l'hôte pour tous les ports exportés du conteneur.
Exemple d'utilisation du paramètre -p
Lorsque vous démarrez un conteneur, vous pouvez utiliser l'option -p
pour mapper un port de l'hôte à un port du conteneur. Format de la commande :
docker run -d -p <host_port>:<container_port> <image>
Exemple 1 : Publication du port du serveur web Nginx
On va lancer un conteneur avec Nginx et publier le port 80 du conteneur sur le port 8080 de l'hôte.
Maintenant, Nginx sera dispo à l'adresse http://localhost:8080.
docker run -d -p 8080:80 --name mynginx nginx
Exemple 2 : Publication de plusieurs ports
Vous pouvez publier plusieurs ports en spécifiant plusieurs options -p
.
Dans cet exemple, Nginx sera dispo en HTTP sur le port 8080 et en HTTPS sur le port 8443.
docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx
Exemple d'utilisation du paramètre -P
Le paramètre -P
publie automatiquement tous les ports spécifiés dans le Dockerfile ou dans les configs du conteneur, sur des ports aléatoires de l'hôte.
Exemple :
docker run -d -P --name mynginx nginx
Pour savoir quels ports ont été assignés, utilisez la commande docker port
:
docker port mynginx
Le résultat sera à peu près comme ça :
80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769
4.2 Publication des ports dans Docker Compose
Pour assigner des ports dans Docker Compose, utilise la directive ports
dans le fichier docker-compose.yml
.
Exemple de fichier docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
Lance Docker Compose :
docker compose up -d
Maintenant Nginx sera accessible via http://localhost:8080 et https://localhost:8443.
4.3 Paramètres supplémentaires pour la publication des ports
1. Limitation de l'adresse IP
Tu peux restreindre l'accès au port du conteneur en spécifiant l'adresse IP de l'hôte.
Exemple :
Dans cet exemple, Nginx sera accessible uniquement depuis le localhost à l'adresse http://127.0.0.1:8080.
docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx
2. Utilisation d'une plage de ports
Tu peux spécifier une plage de ports à publier.
Exemple :
docker run -d -p 8080-8081:80-81 --name mynginx nginx
Conseils pratiques :
- Publier uniquement les ports nécessaires : Publie seulement les ports réellement nécessaires pour accéder aux services afin de réduire les vulnérabilités potentielles.
- Utilisation d'un pare-feu : Configure un pare-feu pour limiter l'accès aux ports publiés uniquement depuis des adresses IP de confiance.
- Surveillance et journalisation : Utilise des outils de surveillance et de journalisation pour suivre l'accès aux ports publiés et détecter toute activité suspecte.
GO TO FULL VERSION