Ich versuche, mysql in einem Docker-Container zu installieren, versuchte verschiedene Bilder von github, es scheint, dass sie alle erfolgreich mysql zu installieren, aber wenn ich versuche, die mysql auszuführen, gibt es einen Fehler:
ERROR 2002 (HY000): Verbindung zum lokalen MySQL-Server kann nicht über den Socket '/var/run/mysqld/mysqld.sock'
hergestellt werden
Systemspezifikationen:
Pakete, die ich bisher versucht habe:
Denken Sie daran, dass Sie eine Verbindung zum aktiven Docker-Container herstellen müssen. Sie möchten wahrscheinlich TCP anstelle von Unix Socket verwenden. Überprüfen Sie die Ausgabe des Befehls docker ps
und suchen Sie nach mysql-Containern. Wenn Sie einen finden, verwenden Sie den folgenden mysql-Befehl: mysql -h 127.0.0.1 -P <mysql_port>
(Sie finden den Port in docker ps
output).
Wenn Sie in docker ps
output keinen laufenden mysql-Container finden können, versuchen Sie docker images
, den mysql-Image-Namen zu finden und versuchen Sie Folgendes:
docker run -d -p 3306:3306 tutum/mysql
wobei "tutum / mysql" der Image-Name in docker images
ist.
Ich weiß nicht, wie ich das erreichen kann, aber ich kann MYSQL erreichen, indem ich
eintippe$ mysql -u Wurzel -h
%Vor% %Vor% %Vor%Wenn Sie MySQL nicht auf Ihrem Host installiert haben, müssen Sie im Container ausführen ( Ссылка gibt Erklärungen zu docker run vs docker exec ).
In Anbetracht dessen, dass Ihr Container ausgeführt wird, könnten Sie ihn verwenden %Code% um auf den Client zuzugreifen.
Wenn Sie Docker Compose verwenden und einen MySQL-Datenbankdienst namens Datenbank deklariert haben, können Sie Folgendes verwenden:
docker exec yourcontainername mysql -u root -p
Ich könnte etwas spät zur Antwort sein und wahrscheinlich weiß die Welt jetzt davon.
Alles, was Sie brauchen, um Ihre Ports des Andock-Containers zu öffnen, um darauf zuzugreifen. Zum Beispiel beim Ausführen des Containers:
docker run --name mysql_container -e MYSQL_ROOT_PASSWORD = root -d
-p 3306:3306
mysql / mysql-server: 5.7
Dadurch kann der mysql Ihres Containers vom Hostcomputer aus erreichbar sein. Später können Sie sich damit verbinden.
docker exec -it mysql_container mysql -u root -p
Schau dir an, was sich in deiner database.yml
-Datei befindet. Wenn Sie bereits Ihre einfache Rails-App haben und diese einfach mit Docker umhüllen, sollten Sie (in database.yml
) ändern:
bis
%Vor% Dabei ist db
der Name meines db-Dienstes von docker-compose.yml
. Und hier ist mein docker-compose.yml
:
Sie starten Ihre App in der Konsole (im App-Ordner) als docker-compose up
. Dann WAIT 1 MINUTE (Lassen Sie Ihren mysql-Dienst vollständig laden), bis einige neue Protokolle nicht mehr in der Konsole erscheinen. Normalerweise sollte die letzte Zeile wie
db_1 | 2017-12-24T12: 25: 20.397174Z 0 [Hinweis] Ende der Liste von nicht nativ partitionierte Tabellen
Dann (in einem neuen Terminalfenster) gelten:
%Vor%und dann
%Vor%Nachdem Sie Ihre Arbeit beendet haben, stoppen Sie die geladenen Bilder mit
%Vor% Verwenden Sie nicht docker-compose down
hier, denn wenn Sie dies tun, löschen Sie Ihren Datenbankinhalt.
Wenn Sie das nächste Mal Ihre Arbeit fortsetzen wollen, wenden Sie sich an:
%Vor%Der Rest der Dinge tut genau wie hier erklärt: Ссылка