Windows 10マシンにSQL Server 2016 Express、ドッカーfor WindowsおよびIISがインストールされています。ドックで実行している.netコアアプリケーションからSQL Server expressに接続できません
SQL Server Expressは、1455ポートでリッスンするように構成されています。 Northwindサンプルデータベースがあります。
Windowsファイアウォールは無効です。
Ipconfig
は、次のことを示しています
Ethernet adapter vEthernet (DockerNAT) 2:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::70f1:3323:a7a8:b7a5%21
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
私は、Visual Studio 2017で、非常に単純な.NETコア2コンソールアプリケーションを作成します。Visual Studioから、Windows上で実行しているときにアプリが正常に実行
using System;
using System.Data.SqlClient;
using System.Net.Http;
namespace ConnectSqlServer
{
class Program
{
static void TestHttp()
{
using (var client = new HttpClient())
{
var response = client.GetAsync("http://10.0.75.1").Result;
var content = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(content);
}
}
static void Main(string[] args)
{
TestHttp();
var cn = new SqlConnection("Data Source=10.0.75.1\\SQLEXPRESS,1455;Initial Catalog=Northwind;User ID=docker;Password=SomeStrongPassword;");
cn.Open();
}
}
}
を。しかし、私はドッカーサポートを追加し、それを実行すると、TestHttp方法は、[OK]を動作しますが、私はSQL Serverに接続することはできません、私は次の例外を取得:
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: 40 - Could not open a connection to SQL Server)
をこれが私のDockerfile
です:
FROM microsoft/dotnet:2.0-runtime
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "ConnectSqlServer.dll"]
そして、これは私のdocker-compose.yml
です:
version: '3'
services:
connectsqlserver:
image: connectsqlserver
build:
context: ./ConnectSqlServer
dockerfile: Dockerfile
私はドッキングウィンドウの続きで実行されている.NETコア2.0アプリからWindowsホスト上で実行されているローカルのSQL Server Expressに接続するために何をすべきアイナー?
編集:
回答:Windowsファイアウォールを無効にするときは注意してください。
私はWindowsファイアウォールをオフにしましたが、ドメインネットワークでのみオフにしました。 Windowsでは、DockerNATアダプタがパブリックネットワークとして認識されます。したがって、WindowsファイアウォールはSQL Serverへの接続をブロックしていました。
パブリックネットワークでWindowsファイアウォールを無効にしました。今すぐ接続できます。
私はこの同じ問題に取り組んでいます。私はあなたより少し遠いですが、まだまだ立ち往生しています。この記事をチェックしてください。 https://docs.docker.com/compose/aspnet-mssql-compose/ – JasonlPrice
@JasonlPrice。しかし、この記事では、ドッカーコンテナでLinux用SQL Serverを実行する方法について説明します。 Windowsホストマシン上でSQL Server Expressを実行しています。 –
Windowsファイアウォールのヒントをありがとう!それは私のためにそれをしました。あなた自身で答えを加え、それがあなたに合っていればそれを正しいものとしてマークしたいかもしれません。 –