Docker-Container greift auf MySQL-Operationen des Hosts zu

Docker-Container greift auf MySQL-Operationen des Hosts zu

Hintergrund:

Es gibt ein Flask-Projekt, das eine Schnittstelle bereitstellt, die mithilfe eines Docker-Containers erstellt und ausgeführt wird. MySQL wird auf dem Hostcomputer ausgeführt, und Sie müssen Flask erlauben, im Container eine Verbindung zum MySQL des Hostcomputers herzustellen.

Mit dem Befehl ifconfig können Sie sehen, dass es Docker0 und eth0 gibt. Im Docker-Container können Sie über die IP-Adresse eth0 plus die Portnummer (3306) eine Verbindung zum MySQL des Hosts herstellen. Darüber hinaus kann nginx über die IP-Adresse docker0 plus die beim Erstellen des Containers angegebene Portnummer auf den Container zugreifen.

Ergänzung: Der MySQL-Container von Docker läuft normal, aber der Hostcomputer kann keine Verbindung zur Datenbank herstellen. Hier ist die Lösung

Docker führt den MySQL-Container normal aus, aber Host Navicat kann keine Verbindung herstellen

Ich habe docker ps auf Docker ausgeführt und die Anzeige war wie folgt:

Das bedeutet, dass mein MySQL normal ist, ich aber mit sqlyog und Navicat keine Verbindung zu meiner Datenbank herstellen kann. Später habe ich das Problem gefunden. Obwohl es mir gelungen ist, einen MySQL-Container zu erstellen (docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.35), gab es eine Eingabeaufforderung, die ich ignoriert habe:

Hier wird darauf hingewiesen, dass das Netzwerk nicht verfügbar ist, sodass der Host keine Verbindung zur Datenbank herstellen kann

Lösung: Geben Sie nun diesen Befehl ein: vim /usr/lib/sysctl.d/00-system.conf (wenn vim nicht funktioniert, geben Sie einfach vi ein):

Dies wird sofort angezeigt:

Fügen Sie am Ende diesen Satz hinzu: net.ipv4.ip_forward=1 (der hinzugefügte Befehl lautet wie folgt: Drücken Sie zuerst die Taste i, dann können Sie arbeiten) und speichern und beenden Sie dann (nachdem Sie den Befehl net.ipv4.ip_forward=1 geschrieben haben, drücken Sie die Esc-Taste, dann Strg+: und geben Sie schließlich wq! ein, um zu speichern und zu beenden), starten Sie dann den Netzwerkdienst neu: systemctl restart network Stoppen Sie zuerst den MySQL-Container, jetzt docker stop docker, und löschen Sie dann den Container docker rm mysql wie folgt:

Jetzt können Sie den MySQL-Container neu erstellen und den Effekt sehen:

Gibt es keine Warnung, dass das Netzwerk nicht verfügbar ist? Ich habe mich über sqlyog verbunden und bei der Verbindung über Navicat war es dasselbe:

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Docker-Container: benutzerdefinierter Host-Netzwerkzugriffsvorgang
  • Docker-Port-Mapping und externe Unzugänglichkeitsprobleme
  • So aktivieren Sie den Fernzugriff in Docker
  • Lösung für das Problem, dass der Docker-Container nicht auf Jupyter zugreifen kann
  • Beim Zugriff auf die Homepage eines im Docker-Modus gestarteten Tomcat tritt ein 404-Fehler auf
  • Docker-Image-Zugriff auf den lokalen Elasticsearch-Port-Vorgang
  • Lösung, wenn Docker plötzlich vom externen Netzwerk nicht mehr erreichbar ist

<<:  Einige weniger bekannte Sortiermethoden in MySQL

>>:  js Array-Einträge () Holen Sie sich die Iterationsmethode

Artikel empfehlen

Prinzipien und Beispiele für Lambda-Ausdrücke

Lambda-Ausdrücke Lambda-Ausdrücke, auch Closures ...

Lösung für das MySQL-Fehlerproblem 1045 (28000)

Ich bin auf den MySQL-FEHLER 1045 gestoßen und ha...

So gestalten Sie das Frontend einer Website elegant und attraktiv für Benutzer

Das Temperament einer Web-Frontend-Website ist ein...

Lösung für das Problem, dass Nacos keine Verbindung zu MySQL herstellen kann

Grund Die MySQL-Version, von der Nacos‘ POM abhän...

Einführung mehrerer benutzerdefinierter Schriftarten in CSS3

Heute habe ich ein Problem in HTML gefunden. Es s...

Probleme mit der Rancher-Bereitstellung und dem Importieren von K8S-Clustern

Die Rancher-Bereitstellung kann über drei Archite...

Ein nützliches mobiles Scrolling-Plugin BetterScroll

Inhaltsverzeichnis Machen Sie das Scrollen flüssi...

Installationsschritte von Docker-CE auf dem Raspberry Pi 4b Ubuntu19-Server

Das Raspberry Pi-Modell ist 4b, 1 G RAM. Das Syst...

Detailliertes Tutorial zum Bereitstellen eines Hadoop-Clusters mit Docker

Ich möchte in meinem Unternehmen kürzlich einen H...

Eine kurze Analyse des Zustandsverständnisses von React

Wie definiert man komplexe Komponenten (Klassenko...

Zusammenfassung der Anwendung von Übergangskomponenten in Vue-Projekten

​Transtion in Vue ist eine Kapselungskomponente f...

Antworten auf mehrere häufig gestellte MySQL-Interviewfragen

Vorwort: Bei Vorstellungsgesprächen für verschied...