在 docker 中连接的 Java JDBC 无法连接到主机数据库



我有一个运行Spring Boot并通过JDBC连接到数据库的Maven容器。

我想连接主机数据库

主机(: Ubuntu/18.04.5 LTS (Bionic Beaver))

(: mysql Ver 14.14 Distrib 5.7.35, for Linux (x86_64)使用EditLine wrapper)

这是我的连接字符串
this.conn = DriverManager.getConnection("jdbc:mysql://172.24.0.1:3306/myDB?"+"user=xxxx&password=xxxx");

这是我的容器IP

$ip route show
default via 172.24.0.1 dev eth0
172.24.0.0/16 dev eth0 proto kernel scope link src 172.24.0.10

我可以telnet和mysql登录IP 172.24.0.1或172.17.0.1在Maven容器

$telnet 172.24.0.1 3306
Trying 172.24.0.1...
Connected to 172.24.0.1.
Escape character is '^]'.
telnet 172.17.0.1 3306
Trying 172.17.0.1...
Connected to 172.17.0.1.
Escape character is '^]'.

但是,我不能通过JDBC连接IP 172.24.0.1或172.17.0.1。

如果你想连接到安装在你的docker镜像所在主机上的数据库,那么你的连接字符串中的主机名应该是host.docker.internal。

DriverManager.getConnection("jdbc:mysql://host.docker.internal:3306/myDB?"+"user=xxxx&password=xxxx");

最新更新