Pour répondre directement à votre question : La raison pour laquelle vous devez utiliser 192.168.99.100:3366 pour accéder au conteneur au lieu de l'IP de l'hôte : 10.0.0.2 est : vous avez utilisé Toolbox, et Toolbox est utilisé par défaut En ce qui concerne la machine virtuelle Virtualbox, il existe une couche supplémentaire.
Description de l'image :
@Youming a raison. Il est recommandé d'utiliser Docker pour Mac Toolbox sera progressivement abandonné.
Testez d'abord l'état du service MySQL sur chaque IP via le port 3306, tel que :
telnet 10.0.0.2 3306
telnet 192.168.99.100 3306
Si telnet constate que le port est ouvert, vérifiez les paramètres MySQL, c'est-à-dire si les clients MySQL avec d'autres adresses IP sont autorisés à accéder
Pourquoi utilisez-vous la version Toolbox de Docker maintenant ? Si vous utilisez directement la dernière version de Docker pour Mac, votre problème ne sera pas un problème...
Docker s'exécute en fait sur une machine virtuelle Linux sur un système Mac. La version Toolbox de Docker utilise VirtualBox comme machine virtuelle car il s'agit d'une application tierce et l'interface fournie par l'application est limitée, bien que Docker puisse mapper. ports vers la machine virtuelle, mais le port de la machine virtuelle ne peut pas être mappé à l'hôte. Pour réaliser ce mappage, vous devez effectuer manuellement le mappage des ports dans VirtualBox.
La nouvelle version de Docker pour Mac utilise xhyve comme fournisseur de machine virtuelle. En raison de la prise en charge native du système Mac, elle fournit des interfaces plus riches et peut également compléter automatiquement le mappage de ports entre la machine virtuelle et l'hôte. . Par conséquent, dans la nouvelle version de Docker pour Mac, il n'est pas nécessaire de mapper manuellement la machine virtuelle au port hôte. Vous pouvez directement utiliser le port local 127.0.0.1 pour accéder au conteneur qui y est lié.
Pour répondre directement à votre question :
La raison pour laquelle vous devez utiliser
192.168.99.100:3366
pour accéder au conteneur au lieu de l'IP de l'hôte :10.0.0.2
est : vous avez utiliséToolbox
, etToolbox
est utilisé par défaut En ce qui concerne la machine virtuelleVirtualbox
, il existe une couche supplémentaire.Description de l'image :
@Youming a raison. Il est recommandé d'utiliser Docker pour Mac
Toolbox
sera progressivement abandonné.Essayez de désactiver le pare-feu
Essayez de voir si vous pouvez vous connecter dans le conteneur. Par défaut, la configuration MySQL ne peut se connecter qu'à l'adresse IP 127.0.0.1.
Fournissez quelques idées :
Testez d'abord l'état du service MySQL sur chaque IP via le port 3306, tel que :
Si telnet constate que le port est ouvert, vérifiez les paramètres MySQL, c'est-à-dire si les clients MySQL avec d'autres adresses IP sont autorisés à accéder
Pour ajouter le segment réseau du conteneur Docker au pare-feu, veuillez autoriser l'accès à l'hôte
iptables -F
Pourquoi utilisez-vous la version Toolbox de Docker maintenant ? Si vous utilisez directement la dernière version de Docker pour Mac, votre problème ne sera pas un problème...
Docker s'exécute en fait sur une machine virtuelle Linux sur un système Mac. La version Toolbox de Docker utilise VirtualBox comme machine virtuelle car il s'agit d'une application tierce et l'interface fournie par l'application est limitée, bien que Docker puisse mapper. ports vers la machine virtuelle, mais le port de la machine virtuelle ne peut pas être mappé à l'hôte. Pour réaliser ce mappage, vous devez effectuer manuellement le mappage des ports dans VirtualBox.
La nouvelle version de Docker pour Mac utilise xhyve comme fournisseur de machine virtuelle. En raison de la prise en charge native du système Mac, elle fournit des interfaces plus riches et peut également compléter automatiquement le mappage de ports entre la machine virtuelle et l'hôte. . Par conséquent, dans la nouvelle version de Docker pour Mac, il n'est pas nécessaire de mapper manuellement la machine virtuelle au port hôte. Vous pouvez directement utiliser le port local 127.0.0.1 pour accéder au conteneur qui y est lié.