Herstellen einer Verbindung zu einem MySQL-Container von einem anderen Container aus
Sie haben einen Docker-Container eingerichtet, auf dem MySQL ausgeführt wird, und Port 3306 verfügbar gemacht, aber wie kann das gemacht werden? Greifen Sie von einem anderen Container aus auf diese Datenbank zu?
Verwenden der IP-Adresse
Zunächst haben Sie versucht, eine Verbindung über die IP-Adresse des MySQL-Containers (172.17.0.2) herzustellen. Dies funktioniert zwar, ist aber nicht ideal, da sich IP-Adressen ändern können.
Benutzerdefinierte Netzwerke
Ein besserer Ansatz besteht darin, benutzerdefinierte Netzwerke zum Verbinden von Containern zu verwenden. Sie können ein Netzwerk erstellen und sowohl die MySQL- als auch die PHP-Container daran anhängen.
docker network create my_network
Container verknüpfen
Führen Sie beide Container aus dasselbe Netzwerk, indem Sie den Netzwerknamen mit dem Flag --network angeben:
docker run -d --name php_container --network my_network my_php_image docker run -d --name mysql_container --network my_network my_mysql_image
Innerhalb der Container in diesem Netzwerk können Sie Containernamen auflösen und über den Hostnamen eine Verbindung herstellen. Vom PHP-Container aus könnten Sie beispielsweise eine Verbindung zu MySQL herstellen mit:
$mysqli = new mysqli("mysql_container", "mattia", "prova", "prova");
Fazit
Benutzerdefinierte Netzwerke bieten eine robustere und flexiblere Möglichkeit, Container in Docker zu verbinden. Die Verwendung von Containernamen als Hostnamen vereinfacht den Zugriff und macht die Abhängigkeit von IP-Adressen überflüssig.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3