Database 使用Docker容器后无法连接Oracle数据库

Database 使用Docker容器后无法连接Oracle数据库,database,oracle,docker,save,load,Database,Oracle,Docker,Save,Load,在本地计算机中,我将应用程序部署到docker镜像到容器中,然后另存为tar文件。然后将tar文件复制到测试环境中,并运行dockerload命令来安装映像和使用该映像创建容器 但是,当应用程序正在运行时,它无法连接到数据库,这在我的本地计算机中从未发生过。并且测试环境能够ping到DB服务器 下面是错误消息。谁能告诉我是否有必要为docker打开任何端口来连接数据库或提供任何建议?非常感谢 Docker version: 1.10 Env : CentOS 7 java.sql.SQLRec

在本地计算机中,我将应用程序部署到docker镜像到容器中,然后另存为tar文件。然后将tar文件复制到测试环境中,并运行dockerload命令来安装映像和使用该映像创建容器

但是,当应用程序正在运行时,它无法连接到数据库,这在我的本地计算机中从未发生过。并且测试环境能够ping到DB服务器

下面是错误消息。谁能告诉我是否有必要为docker打开任何端口来连接数据库或提供任何建议?非常感谢

Docker version: 1.10
Env : CentOS 7
java.sql.SQLRecoverableException:IO错误:连接重置
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:498)
位于oracle.jdbc.driver.PhysicalConnection。(PhysicalConn`entercode here`section.java:553)
位于oracle.jdbc.driver.T4CConnection(T4CConnection.java:254)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
在oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)中
位于oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)
位于oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:151)
在oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:89)中
在oracle.jdbc.pool.OracleImplicitConnectionCache.makeCacheConnection(OracleImplicitConnectionCache.java:1629)
在oracle.jdbc.pool.OracleImplicitConnectionCache.makeOneConnection(OracleImplicitConnectionCache.java:519)
在oracle.jdbc.pool.OracleImplicitConnectionCache.getCacheConnection(OracleImplicitConnectionCache.java:479)
在oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:360)
在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:395)
在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:179)中
在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157)中
下面是docker文件:
在这里输入代码
从centos
曝光8001 9001
运行yum更新-y&&\
curl--不安全--垃圾会话Cookie--位置--远程名称--静默--标题“Cookie:oraclelicense=accept securebackup Cookie”http://download.oracle.com/otn-pub/java/jdk/8u74-b02/jdk-8u74-linux-x64.rpm && \ 
yum localinstall-y jdk-8u74-linux-x64.rpm&&&
rm jdk-8u74-linux-x64.rpm&&
百胜
ENV JAVA_HOME=/usr/JAVA/default\
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
WORKDIR/MCI3
复制MCI3//MCI3/
CMD[“java”、“-jar”、“/MCI3/cs-MCI3.jar”、“-Xmx100m”]
------------------------------------------------------------
在我的本地计算机中:
docker build-t[图像名称]。
docker save-o[TAR_文件名][IMAGE_名称:IMAGE_标签]
创建tar文件后,将其复制到测试环境(无任何internet):
sudo docker load--输入[PATH\u TO\u TAR\u FILE]
sudo docker run-p 9001:9001-p 8001:8001——名称cs-mci3_容器cs-mci3_图像

请尝试下面的CMD命令,一个或两个

  • CMD
    [“java”、“-Djava.security.egd=file:/dev//uradom”、“-jar”、“/MCI3/cs-MCI3.jar”、“-Xmx100m”]

  • 设置docker
    --mtu=1400


  • 那么,您是否将oracle dabase(也是docker容器?)链接到您的应用程序容器,能否向我们展示
    Dockerfile
    docker run
    命令?我没有在docker文件中进行任何oracle数据库设置。应用程序使用spring框架初始化数据库实例。它可以连接到我的本地vm中的db。是否需要对docker容器中的connect db进行任何配置?
        java.sql.SQLRecoverableException: IO Error: Connection reset
                at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:498)
                at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConn`enter code here`ection.java:553)
                at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254)
                at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
                at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
                at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)
                at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)
                at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:151)
                at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:89)
                at oracle.jdbc.pool.OracleImplicitConnectionCache.makeCacheConnection(OracleImplicitConnectionCache.java:1629)
                at oracle.jdbc.pool.OracleImplicitConnectionCache.makeOneConnection(OracleImplicitConnectionCache.java:519)
                at oracle.jdbc.pool.OracleImplicitConnectionCache.getCacheConnection(OracleImplicitConnectionCache.java:479)
                at oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:360)
                at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:395)
                at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:179)
                at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157)
    
    
    Below is the docker file:
    
        enter code here
    
    FROM centos
    EXPOSE 8001 9001
    RUN yum update -y && \ 
        curl --insecure --junk-session-cookies --location --remote-name --silent --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u74-b02/jdk-8u74-linux-x64.rpm && \ 
        yum localinstall -y jdk-8u74-linux-x64.rpm && \ 
        rm jdk-8u74-linux-x64.rpm && \ 
        yum clean all 
    ENV JAVA_HOME=/usr/java/default \ 
        LANG=en_US.UTF-8 \ 
        LC_ALL=en_US.UTF-8 
    WORKDIR /MCI3
    COPY MCI3/ /MCI3/
    CMD ["java","-jar","/MCI3/cs-mci3.jar", "-Xmx100m"]
    
    ------------------------------------------------------------
    In my local machine:
    docker build -t [IMAGE_NAME] .
    docker save -o [TAR_FILE_NAME] [IMAGE_NAME:IMAGE_TAG]
    
    After create the tar file then copy it to the testing env( no any internet) :
    
    sudo docker load --input [PATH_TO_TAR_FILE] 
    sudo docker run -p 9001:9001 -p 8001:8001 --name cs-mci3_container cs-mci3_image