什么会阻止Docker容器中运行的代码连接到单独服务器上的数据库?

时间:2017-06-05 14:00:59

标签: sql-server networking docker .net-core

我在Ubuntu 14.04上的Docker容器中运行了一个.NET Core 1.1应用程序,它无法连接到在单独服务器上运行的SQL Server数据库。

错误是:

  

未处理的异常:System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:TCP提供者,错误:25 - 连接字符串无效)

  1. 我在另一台Ubuntu 14.04服务器上使用相同的命令行部署了相同的图像,并且连接正常。
  2. 在问题服务器(Docker之外)上运行的控制台应用程序可以使用相同的连接字符串进行连接。
  3. 据我在文档中看到,默认情况下,在容器中运行的应用程序可以访问外部网络,那么阻止此连接的是什么?

2 个答案:

答案 0 :(得分:3)

  

默认情况下,在容器中运行的应用程序可以访问外部网络

只有在为容器分配了有效的IP地址时才可以访问。有时Docker为容器选择的IP可能与外部网络冲突。

默认情况下,容器在s = struct('a', 1, 'b', 2, 'c', 3); % A sample structure save('temp.mat', '-struct', 's'); % Save fields to a .mat file clear all % Clear local variables (just for display purposes) load('temp.mat'); % Load the variables from the file whos % Display local variables Name Size Bytes Class Attributes a 1x1 8 double b 1x1 8 double c 1x1 8 double 网络中运行,请查看它:

bridge

找到容器并检查其IP。

要解决冲突,可以customize docker network inspect bridge 网络并设置bridge参数来更改网络的IP范围(配置文件位置取决于主机' OS):

bip

create新的泊坞网络。

或试用"bip": "192.168.1.5/24" 选项:docker run network settings

答案 1 :(得分:0)

这有帮助吗?

Connect to SQL Server database from a docker container

此外,谷歌搜索这个“docker连接到sql server数据库”似乎返回了很多有用的结果。