gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:56:13 25 4
gpt4 key购买 nike

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

错误是:

Unhandled Exception: System.Data.SqlClient.SqlException: 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: 25 - Connection string is not valid)

  1. 我在另一台 Ubuntu 14.04 服务器上使用相同的命令行部署了相同的图像,并且连接正常。
  2. 在问题服务器(Docker 外部)上运行的控制台应用程序可以使用相同的连接字符串进行连接。

据我从文档中可以看出,在容器中运行的应用程序默认可以访问外部网络,那么什么可能会阻止此连接?

最佳答案

an app running in a container has access to the external network by default

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

默认情况下,容器运行在bridge网络中,所以看一下:

docker network inspect bridge

找到容器并检查其 IP。

要解决冲突,可以customize bridge 网络并设置 bip 参数以更改网络的 IP 范围(配置文件位置取决于主机的操作系统):

"bip": "192.168.1.5/24"

create一个新的 docker 网络。

或者尝试使用 net=host 选项:docker run network settings

关于sql-server - 什么会阻止在 Docker 容器中运行的代码连接到单独服务器上的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44370733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com