首页 > 解决方案 > 从我的桌面访问与 Oracle 数据库容器位于同一网络的容器上的 Web 应用程序时出现网络适配器错误

问题描述

我在自己的网络上运行最新的 oracle 容器和一个 tomcat 容器 tomcat:9.0.22-jdk8,我使用了以下命令:

docker network create mynetwork

docker run -dit -p 8080:8080 -e JPDA_ADDRESS=8000 -p 8000:8000 -e JAVA_OPTS=’-Dconfig.file=/usr/local/tomcat/temp/config.properties -Xmx512m’ --name rcmc rcm-container:0.1 catalina.sh jpda run

docker run -dit -p 1521:1521 --name rcmdb rcmoracledatabase:0.1

docker network connect mynetwork rcmc
docker network connect mynetwork rcmdb

我可以使用这些 tnsnames.ora 条目从我的桌面登录到数据库容器,而不会出现任何问题:

ORCLCDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLCDB.localdomain)))
ORCLPDB1=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLPDB1.localdomain)))

当我尝试在http://localhost:8080/从我的 webapp 登录时,出现服务器 500 错误,但有以下异常:

oracle.net.ns.NetException:网络适配器无法建立连接 java.sql.SQLRecoverableException:IO 错误:网络适配器无法建立连接

我尝试了以下 JDBC 连接字符串,但似乎无法连接到 oracle 容器。

jdbc:oracle:thin:@rcmdb:1521:ORCLCDB jdbc:oracle:thin:@rcmdb:1521:ORCLCDB.localdomain jdbc:oracle:thin:@0.0.0.0:1521:ORCLCDB jdbc:oracle:thin:@0.0.0.0 :1521:ORCLLCDB.localdomain

这些命令在我同事的笔记本电脑上运行,但他在桌面上运行 docker 工具箱

我的 docker info 内核版本:4.9.184-linuxkit 操作系统:Docker Desktop OSType:linux

他的 docker info 内核版本:4.14.116-boot2docker 操作系统:Boot2Docker 18.09.6 (TCL 8.2.1) OSType:linux

我错过了什么吗?有什么我需要查看的设置吗?

在此先感谢您的任何信息。

标签: docker

解决方案


在阅读本文档时,以下工作

jdbc:oracle:thin:@host.docker.internal:1521:ORCLCDB


推荐阅读