Я впервые запускаю веб-приложение ASP.NET в Docker Desktop.Я создал приложение ASP.NET (для .NET Framework), используя стандартный шаблон в Visual Studio 2019 с поддержкой Docker.
Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
Docker-compose.yml:
version: '3.4'
services:
mydockerizedwebapp:
image: ${DOCKER_REGISTRY-}mydockerizedwebapp
container_name: mydockerizedwebapp
build:
context: .\MyDockerizedWebApp
dockerfile: Dockerfile
Docker-compose.override.yml:
version: '3.4'
services:
mydockerizedwebapp:
ports:
- "80"
networks:
default:
external:
name: nat
Я установил Docker Desktop на свойКомпьютер Win 10 (под управлением Windows Containers).
Проблема в том, что я не могу отправлять исходящие http-запросы с веб-сервера в Docker.
Я получаюследующее сообщение об ошибке:
'Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, потому что подключенный хост не смог ответить'
Работа веб-сервера в IIS Express работает нормально.
Я использовал Powershell для подключения к контейнеру, в котором находится изображение.Запуск «Test-NetConnection» возвращает следующий вывод:
PS C:\inetpub\wwwroot> Test-NetConnection
ComputerName : internetbeacon.msedge.net
RemoteAddress : 13.107.4.52
InterfaceAlias : Ethernet
SourceAddress : 172.24.21.136
PingSucceeded : True
PingReplyDetails (RTT) : 14 ms
Test-NetConnection -port 80 завершается ошибкой через некоторое время с этим выводом:
PS C:\inetpub\wwwroot> Test-NetConnection -port 80
WARNING: TCP connect to (13.107.4.52 : 80) failed
ComputerName : internetbeacon.msedge.net
RemoteAddress : 13.107.4.52
RemotePort : 80
InterfaceAlias : Ethernet
SourceAddress : 172.24.21.136
PingSucceeded : True
PingReplyDetails (RTT) : 15 ms
TcpTestSucceeded : False
ЕслиЯ открываю другое окно powershell в том же контейнере и запускаю «netstat -an», чтобы увидеть активные соединения, TCP-запрос виден:
Active Connections
Proto Local Address Foreign Address State
[...]
TCP 172.24.21.136:49169 13.107.4.52:80 SYN_SENT
Состояние «SYN_SENT» для всей продолжительности соединенияtest.
Я попытался установить MTU, как предложено в Docker - истечение времени ожидания исходящих HTTPS-запросов , но у меня это не сработало.
Стоит отметить, что яЯ работаю удаленно, поэтому у меня есть VPN-соединение (программное обеспечение), но оно не работает, даже если я отключаю VPN.
Я что-то упустил?Я пытался создать веб-приложение ASP.NET Core с использованием образа nanoserver, но проблема все еще существует.Таким образом, я думаю, что проблема должна быть в моей конфигурации Docker / сети?
Обновление:
Я протестировал запуск того же образа на другом компьютере, который не имеет ни VPN-соединения, нитот же AV установлен.«Test-NetConnection -port 80» работал мгновенно.
Вот захват Wireshark успешного теста на другом компьютере: ![Successful connection test](https://i.stack.imgur.com/y7WWg.png)
Вот захват Wireshark неудачного тестана моем компьютере: ![Failing connection test](https://i.stack.imgur.com/k20Ja.png)
Я вижу, что неисправный компьютер использует тот же DNS-сервер, чтобы найти ip для "internetbeacon.msedge.net", но после ответа с IP 13.107.4.52, TCP-запрос от контейнера не записывается.На рабочей машине этот запрос перехватывается сразу после ответа DNS.