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
- 没有用。我期望这种方式工作的方式是TestConn.exe尝试连接到localhost(默认SQL端口1433),而localhost又连接到Docker主机中的端口1433,该端口对应于SQL Server。
答案 0 :(得分:2)
您要查找的功能确实存在,ip是“ host.docker.internal”,您可以用它替换“ localhost”,并且该应用程序将能够连接到在另一个Docker容器中运行的数据库。
仅从18.03版开始,并且适用于Mac和Windows(此版本尚不支持linux ...)。在linux的docker run命令中“使用--net =“ host”,然后docker容器中的localhost将指向您的docker主机。”