先说结论
在ubuntu18的虚拟机中安装了oracle docker, 做了1521端口映射,虚拟机A的ip是192.168.80.6, oracle容器B的ip是172.17.0.2但是在windows navicat测试连接oracle一直超时
测试:
在虚拟机A中 telnet localhost 1521 成功
在虚拟机A中 telnet 192.168.80.6 1521 失败
在虚拟机A中 telnet 172.17.0.2 1521 失败
排查半天,
发现虚拟机与docker 互相ping都是失败
是虚拟机的docker网络问题,配置docker网络后连接成功
步骤
在虚拟机中查看网络 ip addr
发现docker0网络为
3: docker0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:a1:f4:fe:28 brd ff:ff:ff:ff:ff:ff
执行
# 修改daemon.json中的配置,没有这个文件就创建一个,内容如下
> cat /etc/docker/daemon.json
{
"bip": "8.8.8.8/24",
"default-address-pools": [
{"base": "172.17.1.0/24", "size": 24}
]
}
# 重启服务
> systemctl restart docker.service
# 新建网络
> docker network create my_net
完毕
然后测试连接成功
下面记录一下oracle配置文件
oracle配置文件
listener.ora
# listener.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /home/oracle/app/oracle
tnsnames.ora
# tnsnames.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_HELOWIN =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
HELOWIN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = helowin)
)
)