2016-03-10 21 views
0

连接到泊坞容器我只是拉和运行官方Docker MySQL image,并在本地我的机器上运行:从主机

docker run --name mydb -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.11 

该屏幕上的说明告诉你如何连接到MySQL服务器(容器)从另一个容器(它被配置为命令行客户端)中。但我有一个通用的JDBC胖客户端(SQuirreL),我想知道如何连接到我的码头集装箱。

JDBC连接字符串,我需要同时提供主机名一个DBNAME,我有什么用?我会想象泊坞窗容器是某种从我的主机操作系统寻址的,但我没有实际创建任何数据库还,所以我不知道什么dbname值我能提供:

jdbc:mysql://<hostname>:3306/<dbname> 

回答

2

你可以运行你的实例转发3306:

$ docker run --expose=3306 -p 3306 mysql 

请参阅incoming ports

的指定:

jdbc:mysql://127.0.0.1:3306/<dbname> 

您的命令变成:

$ docker run --name mydb -e MYSQL_ROOT_PASSWORD=12345 -d --expose=3306 -p 3306 mysql:5.7.11 

您可能需要更改MySQL配置。

可以去容器内用:

$ docker exec -it mydb bash 

然后你可以:

$ echo "bind-address = 0.0.0.0" >> /etc/mysql/my.cnf 

不要忘了重装mysql的。

然后您必须创建数据库并导入您的模式(如果需要)。

$ mysql -uroot -p12345 -e"CREATE DATABASE mydb" 
$ mysql -uroot -p12345 mydb < mydb-schema.sql 
+0

谢谢@ joksnet(+1) - 请参阅我的更新问题,其中包含我运行的确切Docker命令。当我尝试合并你的'--expose'和'-p'参数时,我会遇到各种错误。 **如何使用您的(合并)揭露/参数运行我的命令?**再次感谢! – smeeb

+0

再次感谢!一个快速跟进问题,如果你不介意的话:当你说“*不要忘记重新加载mysql *”时,你的意思是停止/重启容器?再次感谢! – smeeb

+0

只需从容器内尝试'service mysql reload'即可。 ;) – joksnet