无法从docker容器连接到我的主机上运行的mySql

我已经部署了一个docker容器,它具有从openjdk7基础镜像构build的简单Java-JDBC代码。

现在我有我的本地机器上的端口3306上运行mysql现在我怎样才能连接到运行在主机上的docker容器的mysql?

我已经部署容器使用:

 docker run -it -p 25000:27000 -p 3307:3306 94e56cffbdf7 bash 

但在容器中,当我尝试运行javaCode时,出现如下错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

成功发送到服务器的最后一个数据包是0毫秒前。 驱动程序尚未收到来自服务器的任何数据包。

如果我尝试使用以下命令连接到mysql:

 mysql -h 10.10.35.129 -p 3307 -u root -p 

10.01.35.129是我的主机的ip。

我收到错误:

bash:mysql:找不到命令

为了引用,我也附加了我试图在Docker容器中运行的Java代码:

 package jdbcCodes; import java.sql.*; public class MySqlJDBC { public static void main(String[] args) { try{ Class.forName("com.mysql.jdbc.Driver"); // here testEmp is DB name and root is user and xxx os password Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/testEmp","root","xxx"); Statement stmt = con.createStatement(); ResultSet rs=stmt.executeQuery("select * from tempEntry"); while(rs.next()){ System.out.println(rs.getInt(1)+" "+rs.getString(2)); } con.close(); } catch(Exception e){ System.out.println(e); } } } 

重build我的问题:
如何连接到docker contaimner在主机上运行的mysql?

在Docker容器内, localhost指的是容器本身,除非你使用--network host ,这有其他的后果。 相反,您要使用其IP地址10.10.35.129来引用主机。

mysql命令不能在容器中工作的原因是你没有安装它。 默认情况下,在Docker中,networking,进程,文件系统和用户(等等)都在容器内分离。