Нет интернета внутри локального сервисного контейнера - PullRequest
0 голосов
/ 09 ноября 2018

Я играю с Service Fabric Mesh на моем локальном ПК, но я борюсь с доступом в Интернет из контейнера (Windows).

Я использую стандартный шаблон веб-приложения от VisualStudio 2017:

public static async Task<int> Main(string[] args)
    {
        try
        {
            var test = await (new System.Net.Http.HttpClient()).GetStringAsync("http://google.com");
            Console.WriteLine(test);

Можно ожидать, что часть HTML будет распечатана, но я получаю следующее исключение:

System.Net.Http.HttpRequestException: такой хост не известен --> System.Net.Sockets.SocketException: такой хост не известен в System.Net.Http.ConnectHelper.ConnectAsync (строковый хост, порт Int32, CancellationToken cancellationToken) --- конец трассировки стека внутренних исключений --- в системе.Net.Http.ConnectHelper.ConnectAsync (хост строки, порт Int32, CancellationToken cancellationToken) в System.Threading.Tasks.ValueTask`1.get_Result () в System.Net.Http.HttpConnectionPool.CreateConnectionAsyncSystem.Threading.Tasks.ValueTask`1.get_Result () в System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync (ValueTask`1 creationTask) в System.Threading.Tasks.ValueTask`1.get_Result () в System.Net.Http.HttpConnectionPool.SendWithRetryAsync (запрос HttpRequestMessage, логический системный указатель doRequestAuthTelling.HentTenTokenToNT.SendAsync (запрос HttpRequestMessage, CancellationToken cancellationToken) по адресу System.Net.Http.HttpClient.FinishSendAsyncUnbuffered (Task`1 sendTask, HttpRequestMessage, CancellationTokenSource cts, Boolean disposeCttkT.HecT.Chint.Tec).Web1.Program.Main (String [] args)

Используется базовый образ докера microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1709, и если я запускаю: docker run microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1709 ping google.com, тогда я получаю:

PS C:\Windows\system32> docker run microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1709 ping google.com

Pinging google.com [172.217.168.238] with 32 bytes of data:
Reply from 172.217.168.238: bytes=32 time=16ms TTL=56
Reply from 172.217.168.238: bytes=32 time=15ms TTL=56
Reply from 172.217.168.238: bytes=32 time=15ms TTL=56
Reply from 172.217.168.238: bytes=32 time=16ms TTL=56

Ping statistics for 172.217.168.238:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 15ms, Maximum = 16ms, Average = 15ms

Что я делаю не так?

Обновление 1:

Когда я запускаю образ Docker напрямую, я получаю:

PS C:\Users\XXX> docker run microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1803 ipconfig.exe /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : XXX
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : XXX

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : XXX
   Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
   Physical Address. . . . . . . . . : 00-15-5D-38-EE-09
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::1c14:1ec3:9b85:5f56%4(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.20.192.4(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.20.192.1
   DHCPv6 IAID . . . . . . . . . . . : 67114333
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-23-7C-13-F1-00-15-5D-38-EE-09
   DNS Servers . . . . . . . . . . . : 172.20.192.1
                                       10.10.0.184 <-- IP of my local machine
                                       10.10.0.1 <-- My router
   NetBIOS over Tcpip. . . . . . . . : Disabled

Если я делаю то же самое (System.Diagnostics.Process.Start("ipconfig.exe", "/all");)внутри кода, работающего в Service Fabric:

Windows IP Configuration

   Host Name . . . . . . . . . . . . : 0ded1f75fa51
   Primary Dns Suffix  . . . . . . . : 
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : Application1

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : XXX
   Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
   Physical Address. . . . . . . . . : 00-15-5D-38-E5-2C
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::1d25:4204:2cd4:1bb0%4(Preferred) 
   IPv4 Address. . . . . . . . . . . : 172.20.202.176(Preferred) 
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.20.192.1
   DHCPv6 IAID . . . . . . . . . . . : 67114333
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-23-7C-11-32-00-15-5D-38-E5-2C
   DNS Servers . . . . . . . . . . . : 172.20.192.1
                                       10.10.0.184
   NetBIOS over Tcpip. . . . . . . . : Disabled

Как вы можете видеть 10.10.0.1 (мой маршрутизатор / шлюз отсутствует в качестве DNS-сервера в последнем дампе).Как мне это добавить?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вам нужно добавить команду EXPOSE в начало dockerfile, это известная ошибка, т.е.

FROM .. WORKDIR ... EXPOSE 80

0 голосов
/ 09 ноября 2018

Также была проблема с DNS в Windows Containers 1709. Можете ли вы попробовать использовать более новый базовый слой и повторить попытку?

Кроме того, ICMP заблокирован внутри Azure. Вы можете использовать PSPing для проверки подключения, хотя.

Подробнее здесь .

Поскольку протокол ICMP не разрешен через загрузку Azure балансировщик, вы заметите, что вы не можете пропинговать виртуальную машину Azure с из Интернета и из виртуальной машины Azure вы не можете пропинговать интернет-локации.

...