我有一个运行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");