【发布时间】:2017-05-03 06:55:47
【问题描述】:
我已经部署了一个 docker 容器,该容器具有从 openjdk7 基础映像构建的简单 Java-JDBC 代码。
现在我有mysql 运行在我的本地机器上的端口 3306。现在我如何从 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);
}
}
}
重复我的问题:
如何从 docker contaimner 连接到主机上运行的 mysql?
【问题讨论】: