Maison  >  Article  >  Opération et maintenance  >  Raisons et solutions pour lesquelles Docker ne peut pas envoyer une requête ping au réseau externe

Raisons et solutions pour lesquelles Docker ne peut pas envoyer une requête ping au réseau externe

PHPz
PHPzoriginal
2023-04-17 16:42:505202parcourir

Lors de l'utilisation de Docker, nous rencontrerons divers problèmes, dont l'un est que le ping du réseau externe ne peut pas être atteint depuis Docker. Ce problème est très courant, mais il est également grave car il peut nous empêcher de nous connecter à des ressources externes.

Il existe de nombreuses raisons pour lesquelles Docker ne peut pas envoyer une requête ping au réseau externe. Voici quelques solutions courantes.

  1. Vérifier les paramètres réseau

Tout d'abord, nous devons confirmer si les paramètres réseau de Docker sont corrects. Lors de l'exécution d'un conteneur Docker, vous devez souvent spécifier le mode réseau. Si le mode réseau n'est pas spécifié correctement, Docker risque de ne pas pouvoir se connecter au réseau externe.

Nous pouvons utiliser la commande suivante pour afficher les paramètres réseau de Docker :

docker network inspect

Avec cette commande, nous pouvons afficher tous les paramètres réseau de Docker. Si les paramètres réseau sont incorrects, nous devons réinitialiser le réseau à l'aide de la commande suivante :

docker network create \
    --driver bridge \
    --subnet 192.168.0.0/16 \
    mynetwork

La commande ci-dessus créera un réseau Docker nommé mynetwork et définira le sous-réseau sur 192.168.0.0/16.

  1. Vérifiez les paramètres du pare-feu

Les paramètres du pare-feu peuvent empêcher Docker de faire une requête ping sur le réseau externe. Nous devons vérifier les paramètres du pare-feu pour nous assurer que l'accès à Docker est autorisé.

Un outil couramment utilisé pour les paramètres du pare-feu est iptables. Nous pouvons vérifier les paramètres iptables à l'aide de la commande suivante :

sudo iptables -L

S'il existe une règle qui bloque l'accès au réseau de Docker, nous devons ajouter la règle suivante :

sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 2375 -j ACCEPT

La commande ci-dessus ajoutera la règle pour autoriser l'accès au réseau de Docker.

  1. Vérifiez les paramètres DNS

Les paramètres DNS peuvent empêcher Docker de se connecter aux réseaux externes. Nous devons confirmer que les paramètres DNS de Docker sont corrects.

Utilisez la commande suivante pour afficher les paramètres DNS de Docker :

docker exec -it container_id cat /etc/resolv.conf

où containers_id est l'ID du conteneur Docker à vérifier.

Si les paramètres DNS sont incorrects, nous pouvons ajouter l'adresse correcte du serveur DNS au fichier /etc/docker/daemon.json de Docker :

{
  "dns": ["1.1.1.1", "8.8.8.8"]
}

Les paramètres ci-dessus indiquent 1.1.1.1 et 8.8.8.8 comme adresses de serveur DNS.

  1. Vérifiez la version de Docker Engine

Enfin, nous devons confirmer si la version de Docker Engine prend en charge les connexions réseau.

Certaines anciennes versions de Docker Engine peuvent rencontrer des problèmes de connexion réseau. Pour éviter ce problème, nous devons mettre à niveau vers la dernière version de Docker Engine.

Vérifiez la version de Docker Engine à l'aide de la commande suivante :

docker version

Si la version n'est pas la dernière, nous devons mettre à niveau le Docker Engine à l'aide de la commande suivante :

sudo apt-get update
sudo apt-get install docker-ce

La commande ci-dessus mettra à jour le Docker Engine avec la dernière version. version et résoudre le problème de connexion réseau.

Pour résumer, le problème de l'impossibilité de cingler le réseau externe depuis Docker peut avoir de nombreuses raisons. Nous devons dépanner une par une selon les solutions ci-dessus. Ce n'est qu'en confirmant la cause première du problème que vous pourrez résoudre efficacement les problèmes de connexion réseau.

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