从主机连接到Docker容器

时间:2016-03-10 19:40:29

标签: mysql jdbc docker

我只是拉动并运行官方Docker MySQL image并让它在我的机器上本地运行:

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

该屏幕上的说明告诉您如何从另一个容器(配置为命令行客户端)内部连接到MySQL服务器(容器)。但我有一个通用的JDBC胖客户端(SQuirreL),我想知道如何连接到我的docker容器。

对于JDBC连接字符串,我需要提供主机名 dbname ,我可以使用什么?我可以想象Docker容器在某种程度上可以从我的主机操作系统中找到,但我还没有真正创建任何数据库,所以我不确定我能提供什么dbname值:

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

1 个答案:

答案 0 :(得分:3)

您可以使用转发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