docker - 从我的桌面访问与 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
我错过了什么吗?有什么我需要查看的设置吗?
在此先感谢您的任何信息。
解决方案
在阅读本文档时,以下工作
jdbc:oracle:thin:@host.docker.internal:1521:ORCLCDB
推荐阅读
- javascript - 提交重力表单后,在同一页面上显示内容
- php - 表单提交跳过/忽略AJAX功能
- reactjs - electron + react + webpack dev 中间件 + hmr - 刷新整个页面而不是热重新加载
- python - 如何将数字四舍五入到指定的上限或下限?
- python-3.x - 如何生成所有可能的数字组合以有效地检查费马大定理
- google-colaboratory - 在 google colab 中挂载多个驱动器
- angular - Rxjs - 以可观察值作为值重新映射对象
- birt - 在 BIRT 中使用 POJO 数据源嵌套表
- mysql - MYSQL 使用连续数值 IF NULL 更新列 - 继续序列
- loops - 弹性搜索循环两个索引的值