2017-04-15 4 views
0

Ich versuche, einen MariaDB-Container für die Verwendung in Docker einzurichten, aber ich mache anscheinend etwas falsch. Ich beginne mit dem Herunterladen und dann Ausführen mit diesem Befehl:Wie MariaDB in Docker verwenden?

docker run -p 127.0.0.1:8002:80 --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -v c:/mysql -d mariadb:latest 

Es wird heruntergeladen es läuft den Container. Dann versuche ich es auf diesen SQL-Befehl auszuführen:

docker exec -it some-mariadb mysql -p -e 'select * from my_table' my_db 

Und es gibt mir die Nutzungsinformationen für MySql ... Ich verstehe nicht, was ich falsch mache? Ich mache das auf einer Windows-Maschine, wenn das einen Unterschied macht.

+0

Es stimmt etwas nicht mit "mysql -p -e 'select * von my_table' my_db", müssen Sie nicht den Benutzernamen & passowrd übergeben –

+1

Bitte beachten Sie: https://www.cyberciti.biz/faq/ run-sql-query-direkt-auf-der-Kommandozeile/ –

+1

80? Meinst du nicht 3306? –

Antwort

2

Ich habe versucht, mit dem Befehl und bekam die folgende Ausgabe:

$> docker exec -it some-mariadb mysql -p -e 'select * from my_table' my_db 
Enter password: 
ERROR 1049 (42000): Unknown database 'my_db' 

Eigentlich ist Ihre MariaDB und die Ausgangsfehlermeldung sinnvoll ausgeführt werden. Im moment gibt es zwei Fehler in Ihrem docker run Befehl:

  • -p 127.0.0.1:8002:80, MariaDB auf Port hört 3306, und Sie können in Dockerfile of Mariadb herausfinden, dass der einzige ausgesetzt Port ist 3306. Ich denke, was Sie wollen, ist -p 3306:3306
  • -v c:/mysql, fügen Sie zusätzliches Volumen unter Container-Verzeichnis /c:/mysql hinzu, aber das Datenvolumen für Mariadb ist /var/lib/mysql. Wenn Sie MySQL-Daten auf Ihrem Rechner verwenden möchten, müssen Sie -v <your_host_directory>:/var/lib/mysql

Wenn Sie im Inneren des Behälters gehen some-mariadb und mysql cleint versuchen, werden Sie sehen, es gibt keine Datenbank my_db genannt:

$> docker exec -it some-mariadb bash 
[email protected]:/# mysql -u root -pmy-secret-pw 
MariaDB [(none)]> show databases; 
+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| mysql    | 
| performance_schema | 
+--------------------+ 
3 rows in set (0.00 sec) 

So Sie müssen entweder das richtige mysql Datenvolume mounten, oder zuerst mariadb initialisieren.

+0

Kann ich durch das Hinzufügen eines Volumes die Daten in meiner Datenbank beibehalten, auch nachdem ich den Container entfernt und einen neuen erstellt habe? – Darius

+1

Ja, dafür ist Volume konzipiert, Mariadb speichert Daten im Container '/ var/lib/mysql' und das Verzeichnis ist ein Volume, das Sie mit '-v :/var an Ihren Host mounten können/lib/mysql'. Weitere Informationen finden Sie unter https://docs.docker.com/engine/tutorials/dockervolumes/ – shizhz