2017-04-15 60 views
0

我想設置一個MariaDB容器在Docker中使用,但我似乎做錯了什麼。我開始下載然後用這個命令運行它:如何在Docker中使用MariaDB?

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 

它下載它運行容器。然後,我嘗試在其上運行該SQL命令:

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

,這讓我MySQL的使用信息......我不明白我在做什麼錯?我在Windows機器上這樣做,如果這有所作爲。

+0

「mysql -p -e'select * from my_table'my_db」有問題,請不要通過用戶名和密碼 –

+1

請參閱https://www.cyberciti.biz/faq/ run-sql-query-directly-on-the-command-line/ –

+1

80?你不是指3306嗎? –

回答

2

我試着與你的命令,並得到了以下的輸出:

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

其實你MariaDB的運行,並輸出錯誤信息是有道理的。這裏有兩種錯誤在你docker run命令:

  • -p 127.0.0.1:8002:80,MariaDB的在端口3306聽,你可以在Dockerfile of Mariadb發現,暴露了唯一的端口是3306。我想你想要的是-p 3306:3306
  • -v c:/mysql,您要在容器目錄/c:/mysql下添加額外的卷,但mariadb的數據量爲/var/lib/mysql。如果你想用你的主機上的MySQL數據,你需要-v <your_host_directory>:/var/lib/mysql

如果你去容器some-mariadb內,並嘗試mysql cleint,你會看到沒有數據庫名爲my_db

$> 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) 

所以您需要先安裝正確的mysql數據卷或init mariadb。

+0

即使刪除容器並創建新容器,添加容量是否允許我將數據保存在數據庫中? – Darius

+1

是的,這就是體積是專爲,MariaDB的將數據存儲在裏面'容器的/ var/lib中/ mysql',而目錄是音量,你可以用它安裝到你的主機'-v :/ VAR/LIB/mysql'。更多信息,請訪問https://docs.docker.com/engine/tutorials/dockervolumes/ – shizhz