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

我是docker的新手,我有一个简单的Java应用程序连接到localhost:3306上的数据库的jar文件localhost:3306 ,我不想创build任何新的dockermysql服务器,我想我的应用程序连接到我现有的数据库。 我想从docker运行这个jar子。 我的Dockerfile是

  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) 

我该怎么办? 我卡住了,请帮助我。 谢谢。

Linux主机

使用networking模式主机启动容器。 docker run --network host ... 这将使容器与主机共享networking堆栈。 因此,从容器连接到localhost:3306将连接到数据库。

Docker for MAC

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

Docker for Windows

在Windows机器上运行ipconfig并查找Ethernet adapter vEthernet (DockerNAT)networking接口的IP地址。 使用该IP连接到数据库。