从 docker 主机外部远程连接到在 docker 容器上运行的 oracle 数据库

Posted

技术标签:

【中文标题】从 docker 主机外部远程连接到在 docker 容器上运行的 oracle 数据库【英文标题】:Remote connection to oracle database running on a docker container from outside the docker's host machine 【发布时间】:2020-03-15 23:18:43 【问题描述】:

我最近一直在尝试使用来自this website 的官方 docker 镜像来设置 Oracle Database Server 12c R2,并且我已经成功地从该镜像运行了一个容器并从容器内部连接到数据库及其外部(来自 docker 主机)。 docker主机是一个VPS(ubuntu 16.04),我从我的笔记本电脑(centos 7)telnet到数据库的IP/PORT,但我无法使用sqlplus命令连接到数据库。 tnsnames.ora 文件是这样的:

ORCLCDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 217.182.235.26)(PORT = 32756)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLCDB.localdomain)))
ORCLPDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 217.182.230.21)(PORT = 32756)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLPDB1.localdomain)))

而listener.ora是这样的:

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 217.182.235.26)(PORT = 32756)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))
DIAG_ADR_ENABLED = off
SSL_VERSION = 1.0

我用来从本地机器连接的命令是:

sqlplus64 UI_TEST/ut@217.182.235.26:32756/ORCLCDB.localdomain

但我得到ORA-12537: TNS:connection closed

有什么问题? 我错过了什么?

【问题讨论】:

【参考方案1】:

您观察到的错误可能有多种原因。你能检查一下这些solutions 是否能让你成功。

还值得检查您是否可以将主机端口映射到 dockerised 侦听器端口,从而建立一个隧道机制来让您的连接通过。

【讨论】:

以上是关于从 docker 主机外部远程连接到在 docker 容器上运行的 oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

docker app 在 https 上服务并连接到外部 rethinkdb

无法使用桥接网络模式从 docker 容器连接到远程 SQL 服务器

如何将我的 docker 连接到远程数据库?

如何将主机上运行的 Spring Boot 应用程序连接到 Docker 上运行的 Postgresql?

如何将安装在主机服务器上的 phpmyadmin 连接到正在运行的 docker 容器内的 maria db? [关闭]

无法从外部 docker 连接到 dockerized redis 实例