Windows 10 не может получить доступ к службе, работающей в локальном docker контейнере - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь настроить свой сервис для работы на Docker локально, но у меня возникают проблемы с доступом к нему. Вот мой Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.0.102-buster AS runtime

ENV ASPNETCORE_URLS http://+:8080
EXPOSE 8080
WORKDIR /app
COPY out ./
COPY secrets /secrets

ENTRYPOINT ["dotnet", "MyProject.dll"]

Вот команды, которые я использую для его запуска:

docker run -it --link redis:redis --name myProject -p 8080:8080 my-project

Служба запускается без проблем. Если я ввожу c в контейнер, я могу свернуть свою конечную точку проверки здоровья в http://localhost:8080/api/healthcheck и получить код состояния 200.

Однако, когда я go пытаюсь получить доступ к нему с хоста, это как будто его не существует. Я пытался попасть по тому же адресу, что и выше, но ответа нет. Я ожидаю, что смогу сделать это, поскольку я выставляю и перенаправляю порт 8080.

Я читал, что вы должны попытаться подключиться к нему с его частным IP-адресом, который из команды docker inspect myProject , он говорит мне, что шлюз для docker контейнеров 172.17.0.1, а адрес для моего контейнера 172.17.0.3. Поэтому, если я попытаюсь попасть в http://172.17.0.1:8080/api/healthcheck, я также ожидаю, что он вернет 200, но я не получу ответ.

Я также читал, что Windows имеет некоторые проблемы с попаданием в контейнеры Docker на том же хосте, и что для этого нужно было использовать его частный IP-адрес, как я пытался выше, но я ничего не получил.

В качестве альтернативы я попытался избавиться от строк EXPOSE и ENV в моем Dockerfile, чтобы служба работала на своих типичных портах разработки на 5000/5001 для http / https соответственно, но я получаю те же результаты.

Я также попытался запустить команду запуска как: docker run -it -p 127.0.0.1:5000-5001:5000-5001 --link test-redis:redis --name myProject my-project, что вызывает команда docker ps -a, чтобы явно сказать, что порты 127.0.0.1:5000-5001->5000-5001/tcp, но я безрезультатно.

Наконец, я заметил, что не могу пропинговать IP-адреса 172.17.0.1 или 172.17.0.3. Я полагаю, что это как-то связано с этим, но я не знаю, что именно.

Я в растерянности. Я понятия не имею, что еще делать на этом этапе. Кто-нибудь может дать мне какое-нибудь руководство?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...