2017-04-15 9 views
0

Dockerで使用するMariaDBコンテナをセットアップしようとしていますが、何か問題があるようです。まず、ダウンロードしてからこのコマンドで実行します。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」に間違いがあります。あなたはusername&passowrdを渡す必要はありません –

+1

こちらをご覧ください:https://www.cyberciti.biz/faq/コマンドラインで直接実行-sql-query- –

+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コマンドで2つのエラーがいる:

  • -p 127.0.0.1:8002:80、mariadbがポート3306でリッスンしている、とあなたが露出だけポートが3306であることをDockerfile of Mariadbに見つけることができます私はあなたが何をしたいと思いますが-p 3306:3306
  • です-v c:/mysqlの場合、コンテナディレクトリ/c:/mysqlの下に余分なボリュームを追加していますが、mariadbのデータボリュームは/var/lib/mysqlです。だから、

    $> 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のデータを使用する場合は、コンテナsome-mariadbの内側に行くとmysql cleintをしようとした場合、あなたはmy_dbと呼ばれる無データベースはありません参照してくださいよ、-v <your_host_directory>:/var/lib/mysql

が必要正しいmysqlデータボリュームをマウントするか、最初にinit mariadbをマウントする必要があります。

+0

ボリュームを追加すると、コンテナを削除して新しいデータベースを作成した後でも、データベースにデータを保持できますか? – Darius

+1

はい、これはボリュームが設計されているため、mariadbはコンテナ内の '/ var/lib/mysql'にデータを格納し、そのディレクトリはボリュームです、' -v :/ varを使ってホストにマウントできます/ lib/mysql'を実行します。詳細はhttps://docs.docker.com/engine/tutorials/dockervolumes/をご覧ください。 – shizhz

関連する問題