簡體   English   中英

Docker 容器應用程序無法連接到 Docker 主機中的 SQL Server

[英]Docker container app cannot connect to SQL Server in Docker host

Docker 容器中的 .NET 應用程序(基於microsoft/dotnet-framework映像)無法連接到安裝在 Docker 主機系統上的 SQL Server 2016。 Docker 主機為 Windows Server 2016。Docker 版本為 17.03.2-ee-5。

我使用以下命令序列運行容器和 .NET 應用程序:

docker run -it microsoft/dotnet-framework cmd
docker cp App <container-id>:/
docker exec -it <container-id> cmd
cd App
TestConn.exe

TestConn.exe 在大約 10 秒后拋出異常,抱怨它無法連接到 SQL Server。 連接字符串是:

Data Source=localhost;Initial Catalog=SomeDB;Persist Security Info=False;User ID=appuser;Password=apppwd;MultipleActiveResultSets=False;Connection Timeout=30;

如果我在 Docker 主機系統中運行 TestConn.exe,則應用程序成功連接到 SQL Server。

我在--expose=1433 docker run命令中添加了--expose=1433 - 沒有用。 我希望它起作用的方式是 TestConn.exe 嘗試連接到 localhost(默認 SQL 端口 1433),然后連接到 Docker 主機中的端口 1433,該端口對應於 SQL Server。

您正在尋找的功能確實存在,ip 是“host.docker.internal”,您可以用“localhost”替換它,應用程序將能夠連接到在您的另一個 docker 容器中運行的數據庫。

這僅從 18.03 版本開始,適用於 Mac 和 Windows(目前尚不支持 Linux...)。 在 Linux 中,在您的 docker run 命令中“使用 --net="host",然后您的 docker 容器中的 localhost 將指向您的 docker 主機。”

How to access host port from docker container有更多關於這方面的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM