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
- 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
- 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
- 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
- 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
- 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.
- 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
- 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
- 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!

Docker et Kubernetes améliorent le déploiement des applications et l'efficacité de gestion via l'orchestration des conteneurs. 1.Docker construit des images via DockerFile et exécute des conteneurs pour assurer la cohérence de l'application. 2. Kubernetes gère les conteneurs via POD, le déploiement et le service pour réaliser un déploiement et une expansion automatisés.

Docker et Kubernetes sont des leaders de la conteneurisation et de l'orchestration. Docker se concentre sur la gestion du cycle de vie des conteneurs et convient aux petits projets; Kubernetes est bon dans l'orchestration des conteneurs et convient aux environnements de production à grande échelle. La combinaison des deux peut améliorer l'efficacité du développement et du déploiement.

Docker et Linux sont des correspondances parfaites car elles peuvent simplifier le développement et le déploiement des applications. 1) Docker utilise les espaces de noms et les CGRoupes de Linux pour implémenter l'isolement des conteneurs et la gestion des ressources. 2) Les conteneurs Docker sont plus efficaces que les machines virtuelles, ont des vitesses de démarrage plus rapides et la structure hiérarchique en miroir est facile à construire et à distribuer. 3) Sur Linux, l'installation et l'utilisation de Docker sont très simples, avec seulement quelques commandes. 4) Grâce à DockerCose, vous pouvez facilement gérer et déployer des applications multi-container.

La différence entre Docker et Kubernetes est que Docker est une plate-forme conteneurisée adaptée aux petits projets et aux environnements de développement; Kubernetes est un système d'orchestration de conteneurs adapté aux grands projets et aux environnements de production. 1.Docker simplifie le déploiement des applications et convient aux petits projets avec des ressources limitées. 2. Kubernetes fournit des capacités d'automatisation et d'évolutivité, adaptées aux grands projets qui nécessitent une gestion efficace.

Utilisez Docker et Kubernetes pour créer des applications évolutives. 1) Créer des images de conteneur à l'aide de Dockerfile, 2) Déploiement et service de Kubernetes via la commande Kubectl, 3) Utilisez HorizontalPodautoscaler pour obtenir une mise à l'échelle automatique, créant ainsi une architecture d'application efficace et évolutive.

La principale différence entre Docker et Kubernetes est que Docker est utilisé pour la conteneurisation, tandis que Kubernetes est utilisé pour l'orchestration des conteneurs. 1.Docker fournit un environnement cohérent pour développer, tester et déployer des applications et mettre en œuvre l'isolement et la limitation des ressources via des conteneurs. 2. Kubernetes gère les applications conteneurisées, fournit des fonctions de déploiement, d'extension et de gestion automatisées et prend en charge l'équilibrage de charge et la mise à l'échelle automatique. La combinaison des deux peut améliorer le déploiement des applications et l'efficacité de la gestion.

L'installation et la configuration de Docker sur Linux nécessite de s'assurer que le système est 64 bits et le noyau version 3.10 et supérieur, utilisez la commande "sudoapt-getUpdate" et installez-le avec la commande "sudoapt-getUpdate" et vérifiez-le avec "sudoapt-getUpdate" et. Docker utilise l'espace de noms et les groupes de contrôle du noyau Linux pour atteindre l'isolement des conteneurs et la limitation des ressources. L'image est un modèle en lecture seule et le conteneur peut être modifié. Des exemples d'utilisation incluent l'exécution d'un serveur Nginx et la création d'images avec Dockerfiles personnalisés. commun

La raison de l'utilisation de Docker est qu'il fournit un environnement efficace, portable et cohérent pour former, distribuer et exécuter des applications. 1) Docker est une plate-forme conteneurisée qui permet aux développeurs d'emballer des applications et leurs dépendances dans des conteneurs portables légers. 2) Il est basé sur la technologie des conteneurs Linux et le système de fichiers conjoints pour assurer le démarrage rapide et un fonctionnement efficace. 3) Docker prend en charge la construction en plusieurs étapes, optimise la taille de l'image et la vitesse de déploiement. 4) L'utilisation de Docker peut simplifier les processus de développement et de déploiement, améliorer l'efficacité et assurer la cohérence entre les environnements.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.
