从主机连接到Docker容器

我只是拉和运行官方的Docker MySQL映像 ,并让它在我的机器上本地运行:

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

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

对于JDBC连接string,我需要提供一个主机名和一个dbname ,我可以使用什么? 我想可以从我的宿主操作系统中findDocker容器,但是我还没有创build任何数据库,所以我不确定我可以提供什么样的dbname值:

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

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

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

查看传入的端口 。

您指定:

 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 

您可能需要更改MySQLconfiguration。

可以走进容器内:

 $ docker exec -it mydb bash 

然后你可以:

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

不要忘记重新加载MySQL。

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

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