Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为localhost/已经存在的数据库运行docker容器,而不创建任何mysql服务器?_Java_Mysql_Docker - Fatal编程技术网

Java 如何为localhost/已经存在的数据库运行docker容器,而不创建任何mysql服务器?

Java 如何为localhost/已经存在的数据库运行docker容器,而不创建任何mysql服务器?,java,mysql,docker,Java,Mysql,Docker,我对docker很陌生, 我有一个简单java应用程序的jar文件,它连接到localhost:3306上的数据库,我不想创建任何新的docker mysql服务器,我希望我的应用程序连接到我现有的数据库。 我想从docker那里运行这个罐子。我的文件是 FROM java:8 COPY . /var/www/java WORKDIR /var/www/java CMD ["java", "-jar","exp.jar"] 但它显示出错误 com.m

我对docker很陌生, 我有一个简单java应用程序的jar文件,它连接到
localhost:3306
上的数据库,我不想创建任何新的docker mysql服务器,我希望我的应用程序连接到我现有的数据库。 我想从docker那里运行这个罐子。我的文件是

 FROM java:8  
     COPY . /var/www/java  
     WORKDIR /var/www/java  
     CMD ["java", "-jar","exp.jar"]
但它显示出错误

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
   Communications link failure Last packet sent to the server was 0 ms
   ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
   Method) at
   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
   at
   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at
   com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at
   com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
   at
   com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
   at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718) at
   com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) at
   sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at
   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
   at
   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at
   com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at
   com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302) at
   com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
   at java.sql.DriverManager.getConnection(DriverManager.java:664) at
   java.sql.DriverManager.getConnection(DriverManager.java:247) at
   com.linkeztech.code.App.main(App.java:37) Caused by:
   java.net.ConnectException: Connection refused (Connection refused)
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
通信链路故障上次发送到服务器的数据包为0毫秒
以前在sun.reflect.nativeConstructor附件mpl.newInstance0(本机
方法)在
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
com.mysql.jdbc.Util.handleNewInstance(Util.java:406)位于
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
在
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
位于com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:718)
JDBC4Connection.(JDBC4Connection.java:46)位于
sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
com.mysql.jdbc.Util.handleNewInstance(Util.java:406)位于
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)位于
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
java.sql.DriverManager.getConnection(DriverManager.java:247)位于
com.linkeztech.code.App.main(App.java:37)由以下原因引起:
java.net.ConnectException:拒绝连接(拒绝连接)
我该怎么办?我卡住了,请帮帮我。
谢谢。

Linux主机

使用网络模式主机启动容器<代码>docker运行--网络主机…。这将使容器与主机共享网络堆栈。因此,从容器到
localhost:3306
的连接将连接到数据库

MAC的Docker

从应用程序容器内部连接到
docker.for.mac.localhost:3306
,而不是
localhost:3306
docker.for.mac.localhost是一个特殊的DNS名称,将解析为主机的IP

用于Windows的Docker


在windows计算机上运行ipconfig,并查找
以太网适配器vEthernet(DockerNet)
网络接口的IP地址。使用该IP连接到数据库。

您的主机操作系统是什么?mac,linux,windows?