首页 新闻 会员 周边

docker 里面的.netcore 程序访问sqlserver的问题

0
悬赏园豆:5 [待解决问题]

背景

  1. 在宿主机通过hyperV安装了一台centos7的虚拟机,虚拟机的IP地址是固定的(如192.168.137.110)

  2. 然后在虚拟机安装了docker程序,里面部署了一个.netcore api程序,该程序所访问的数据库是安装在宿主机上面的(IP为192.168.0.109)

  3. 虚拟机和宿主机是可以互相ping通

问题

core api程序访问数据报如下错误:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)

通过各类搜索引擎和问答网站查询,大致说出现该问题应该是docker设置的网桥相关(或许不是),但是最后也没有成功处理,所以在此请教一下各位大佬。

PS

在解决问题的过程中,数据库相关的设置应该没有问题,比如tcp/ip相关设置、namedpipes等也全部打开 还有防火墙等都打开了。

RoseNix的主页 RoseNix | 初学一级 | 园豆:2
提问于:2020-06-22 22:53
< >
分享
所有回答(4)
0

很显然,你应该先测试一下 centos 7的虚拟机能不能连接到宿主机的 SQL Server

telnet 192.168.0.109 1433
爱编程的大叔 | 园豆:30839 (高人七级) | 2020-06-23 08:30

这个是可以的

[root@namenode ~]# telnet 192.168.0.109 1433
Trying 192.168.0.109...
Connected to 192.168.0.109.

支持(0) 反对(0) RoseNix | 园豆:2 (初学一级) | 2020-06-23 09:32

@RoseNix: 如果只有这样,就是不可以的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2020-06-23 09:35

@爱编程的大叔: 通过另行测试可以确认虚拟机是可以能过够访问宿主机上的 sqlserver的

支持(0) 反对(0) RoseNix | 园豆:2 (初学一级) | 2020-06-23 10:46
0

在容器里面ping一下SQLServer的IP。

如果ping不通,那就是hyper-v的网络的问题,改成桥接试试。

如果能ping通,那就还是SQLServer的配置或者防火墙的问题。

Timetombs | 园豆:3954 (老鸟四级) | 2020-06-23 08:31

这些都没有问题,通过另行测试确认虚拟机是可以访问宿主机上的 sqlserver的

支持(0) 反对(0) RoseNix | 园豆:2 (初学一级) | 2020-06-23 10:55

@RoseNix: 容器,不是虚拟机。

支持(0) 反对(0) Timetombs | 园豆:3954 (老鸟四级) | 2020-06-23 17:15
0

在终端执行ifconfig
可能看到 docker0 那个 ip,用这个可以连接到宿主机

tenghao510 | 园豆:179 (初学一级) | 2020-06-23 08:55
0

可能是容器内OpenSSL的版本问题,在Dockefile里面加一句
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf
参考这个帖子https://github.com/dotnet/SqlClient/issues/222

fatyang | 园豆:202 (菜鸟二级) | 2020-06-30 18:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册