【发布时间】:2021-12-16 19:52:43
【问题描述】:
我有 2 个容器:
- 数据库 (
azuresqledge) - 应用程序 (
my-dbup-app- .NET 6.0)
我可以从我的主机访问数据库容器并通过 localhost 从我的主机运行 .NET 应用程序。
当我尝试通过 Docker 运行应用程序时,应用程序找不到 SQL Server 实例。
Server=azuresqledge;Database=databasename;User Id=sa;password=pwd;Trusted_Connection=False;MultipleActiveResultSets=true;
System.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP Provider,错误:35 - 捕获到内部异常)
我确保两者都在同一个 Docker 网络上运行 - bridge - 所以我只需要将连接字符串设置为容器的名称,但是应用程序无法连接。
我在 Mac M1 上运行,所以需要使用azuresqledge。
我在配置中缺少什么吗?
谢谢。
【问题讨论】:
-
你是如何启动容器的;为什么你认为他们在同一个网络上?特别是,如果您在没有
--net选项的情况下运行docker run,则它们位于default bridge network 上,并且实际上无法使用通常的方式相互通信。参见例如How to communicate between Docker containers via "hostname"。 -
我没有指定网络,所以我现在创建了一个新网络并使用
docker network connect <network-name> <container-name>将我的两个容器移动到它现在可以连接。谢谢! -
为了回答你的第一个问题,我用Portainer查看了所有网络,发现我的容器在网络上
bridge。
标签: c# docker docker-networking