Maison  >  Article  >  Opération et maintenance  >  Que dois-je faire si le port Web créé par Docker est bloqué ?

Que dois-je faire si le port Web créé par Docker est bloqué ?

PHPz
PHPzoriginal
2023-04-18 14:07:361690parcourir

Docker est un moteur de conteneurisation open source très populaire. Il est largement utilisé dans les environnements de développement et de production car il peut être construit rapidement, facile à gérer et garantit la portabilité des applications. Cependant, lorsque vous utilisez Docker pour créer une application Web, il n'est pas rare que les ports soient incapables de communiquer. Aujourd'hui, nous analyserons les raisons et les solutions au port Web bloqué construit par Docker.

1. Analyse des causes

  1. Cause du pare-feu

Le service de pare-feu iptables est activé par défaut dans le système Linux. Si vous ne l'avez pas configuré, le pare-feu peut empêcher votre conteneur Docker de communiquer avec le réseau externe. Par conséquent, vous pouvez désactiver le pare-feu ou ajouter des règles afin que Docker puisse communiquer en douceur avec le réseau externe. Ce qui suit est une commande de référence :

Fermez le pare-feu : $ sudo service iptables stop

Ouvrir le port : $ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

  1. La raison du mappage de port

Une fois que Docker a démarré le conteneur, mappez le port du conteneur à un port de l'hôte via le mappage de port pour établir la communication entre le conteneur et le réseau externe. Par défaut, le réseau du conteneur est indépendant et ne communique qu'en interne. Par conséquent, si vous ne mappez pas les ports à l’intérieur du conteneur, le port risque de ne pas pouvoir communiquer. Voici la méthode de mappage du port par défaut :

$ docker run -p 80:80 image-name

  1. Problèmes de réseau de conteneur

Il existe trois pilotes réseau dans Docker, à savoir pont, hôte et aucun. Lors de l'utilisation de conteneurs Docker, le pilote réseau pont est utilisé par défaut, formant un réseau virtuel basé sur le réseau NAT. Si votre conteneur ne peut pas accéder au réseau externe, vous devrez peut-être vérifier si votre pilote réseau est correctement sélectionné. Vous pouvez utiliser la commande suivante pour afficher le pilote réseau :

$ docker network ls

  1. Problème d'adresse IP du conteneur

Une fois que Docker a démarré le conteneur, il attribuera une adresse IP unique basée sur le pilote réseau. Si l'adresse IP de votre conteneur ne peut pas accéder au réseau externe, vous devez vérifier si la carte réseau qui y est connectée est correctement configurée. Dans l'exemple suivant, nous pouvons voir que l'adresse IP du conteneur est 172.17.0.2 :

$ docker inspect containers-name | grep IPAddress

2. Solution

  1. Confirmez si le mappage du port est correct

Vous peut utiliser la méthode suivante Vérifiez la relation de mappage de port :

$ nom du conteneur du port docker

Le contenu de sortie doit être :

80/tcp -> 0.0.0.0:80

La commande ci-dessus peut vérifier le mappage de port. à l'intérieur du conteneur vers le port hôte.

  1. Confirmez si le pilote réseau est sélectionné correctement

Vous pouvez utiliser la méthode suivante pour vérifier le type de réseau utilisé par le conteneur :

$ docker inspect containers-name | grep NetworkMode

Si la sortie est bridge, il signifie que le pilote réseau a été sélectionné correctement. Si la sortie est host ou none, vous pouvez la modifier comme suit :

Changez le type de réseau en bridge :

$ docker run --network bridge image-name

  1. Confirmez si le pare-feu est désactivé ou si les règles sont défini correctement

OK Lors de l'exécution de la commande Docker, ajoutez un paramètre --privileged afin que le conteneur Docker dispose d'autorisations relativement élevées :

$ docker run --privileged image-name

  1. Confirmez si l'adresse IP du conteneur est correcte

Vous pouvez utiliser la commande suivante pour vérifier l'adresse IP du conteneur :

$ docker inspect containers-name | grep IPAddress

Si l'adresse IP de votre conteneur change, vous pouvez utiliser la commande suivante pour réattribuer une adresse IP unique :

$ docker run --ip 172.17.0.10 image -name

En bref, lorsque le port d'application Web démarré par votre Docker ne peut pas communiquer, vous devez d'abord rechercher la cause de cette situation, puis résoudre le problème de la manière correspondante. J'espère que cet article pourra aider tout le monde.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn