Le réseau par défaut du conteneur docker prend la forme d’un pont (dans le même LAN que l’hôte, mais utilisant une IP LAN séparée), lorsque le programme tourne en environnement de production, il suffit de configurer l’adresse de service correspondante pour se connecter à la base de données, aux redis, etc.
Dans un environnement de développement, si le service fonctionne dans docker et que la base de données s’exécute localement, configurer 127.0.0.1 n’est pas facile à utiliser.
Cela peut se résoudre de deux manières.
Solution 1 :
Considérez la machine hôte et le conteneur comme deux machines distinctes, et configurez l’IP LAN ou l’IP publique de l’hôte lors de la configuration de l’adresse.
Solution 2 :
Écrivez l’adresse hôte directement comme : host.docker.internal cependantLa seconde méthode nécessite une version Docker supérieure à 18.03 et doit être disponible sur Windows et Mac。
Pour tester si ces deux méthodes peuvent accéder à l’hôte, vous pouvez exécuter directement une image avec docker pour ping à la ligne de commande :
Comme vous pouvez le voir sur l’image ci-dessus, accès par conteneurhost.docker.internalVous pouvez accéder au service de l’hôte, en vérifiant le fichier /etc/hosts, vous constaterez qu’il n’y a pas de redirection de nom de domaine, et que vous ne connaissez pas le principe sous-jacent spécifique de docker.
L’hôte et le conteneur peuvent accéder aux services de l’hôte via host.docker.internal, mais l’adresse renvoyée par la commande ping est différente, comme suit :
|