首页 > 解决方案 > 本地数据库 docker 到 VPN 中的 AWS 数据库

问题描述

我是Docker的初学者,希望大家可以帮忙,非常感谢。

我从公司存储库下载了一个 docker 映像,并设法从该映像在本地计算机中创建了一个容器,我们将其命名为 mydb。它是通过以下命令创建的: docker run --name mydb -p 1521:1521 -d mycompany.com:5000/docker-db:20.0.04

我可以通过我的 sqldqveloper 使用以下连接字符串访问数据库:system/abc123@127.0.0.1:1521/ORCL

我们公司在 AWS 中有一个数据库服务器,我们把它命名为 awsdb。我可以在 vpn 登录后访问它。我可以在 sqldqveloper 中使用以下连接字符串访问数据库: system/abc123@awsdb.amazonaws.com:1521/awsdb

问题:如何使用数据库链接“my_dblink”在 mydb 中创建到 awsdb 的数据库链接?例如。从 dual@my_dblink 中选择 sysdate。

我尝试使用以下命令:

CREATE PUBLIC DATABASE LINK my_dblink
CONNECT TO system
IDENTIFIED BY abc123
USING 'awsdb.amazonaws.com:1521/awsdb';

但它返回错误 ORA-12543: TNS:destination host unreachable。

我尝试删除容器并通过设置 net=host 重新创建它: docker run --name mydb -p 1521:1521 -d --net=host mycompany.com:5000/docker-db:20.0.04 然后现在我可以'甚至没有连接是与system/abc123@127.0.0.1:1521/ORCL 错误 ORA-12541 返回:没有侦听器。

如何打开内部 docker 与 AWS 数据库服务器之间的连接?谢谢你。

标签: oracleamazon-web-servicesdockercontainersdatabase-link

解决方案


首先,我确实相信您需要了解您要完成的工作。当您在两个数据库之间创建数据库链接时,您必须满足的主要要求是在您使用的端口中它们之间具有网络连接。由于其中一个存储在公共云中,至少您需要:

  • 安装 docker 的网络与AWS.
  • 但是,由于您的 docker 安装在您的本地笔记本电脑中,因此AWS应该可以对 Internet 开放,这是一个安全问题,并且可能未启用。
  • 此外,在此连接中可能需要使用的所有端口中都需要防火墙规则。

由于您正在使用VPN允许您访问AWS Cloud资源的登录名,因为您正在通过它进行连接(可能使用Active Directory和/或 a certificate,甚至可能在您的公司和资源SSO federation之间使用),数据库无法使用它进行连接。ADAWS

总而言之,这是不可能的,如果我是安全部门的人,我绝不会允许这样做。您唯一的选择是在docker其中创建一个数据库AWS,然后在那里创建数据库链接。


推荐阅读