如何运行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:3306
。 docker.for.mac.localhost
是一个特殊的DNS名称,将parsing为主机的IP。
Docker for Windows
在Windows机器上运行ipconfig并查找Ethernet adapter vEthernet (DockerNAT)
networking接口的IP地址。 使用该IP连接到数据库。
- 在EBS中将S3文件下载到docker镜像
- docker hub上的apache / activemq docker镜像
- 在亚马逊ecs上的集装箱交货
- 在高山docker图像中使用SUID
- 在Docker Toolbox / Mac安装后设置DOCKER_HOST
- WebPageTest WPT专用实例 – 代理不注销与服务器
- 获取Vmware之旅并转到Docker,如何正确设置Dockerfile或cointainer?
- Docker“在docker-compose up”期间“优雅地停止”自己,而不是`docker-compose run –entrypoint`
- Jenkins Docker容器在启动时不会将预先安装的插件复制到JENKINS_HOME