Docker容器中的.NET应用(基于microsoft/dotnet-framework镜像)无法连接到Docker主机系统上安装的SQL Server2016。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.exeTestConn.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。
我在docker run命令中添加了--expose=1433 --没有起作用。我期望的工作方式是TestConn.exe尝试连接到本地主机(默认的SQL1433端口),而本地主机又连接到Docker主机中的端口1433,该端口对应于SQL Server。
发布于 2018-10-15 02:43:33
您正在寻找的功能确实存在,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有更多关于这方面的信息。
https://stackoverflow.com/questions/45828911
复制相似问题