Windows 10无法访问在本地Docker容器中运行的服务

时间:2020-02-14 19:42:37

标签: windows docker

我正在尝试将服务设置为在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

该服务启动正常,没有任何问题。如果我执行该容器操作,则可以将我的运行状况检查端点卷曲在http://localhost:8080/api/healthcheck处并获取200状态代码。

但是,当我尝试从主机访问它时,好像它不存在。我尝试在我上面卷曲的相同地址处点击它,但没有任何反应。我希望在暴露并转发端口8080时能够做到这一点。

我读到您应该尝试使用其私有IP地址来访问它,该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地址,但我一无所获。

或者,我尝试摆脱Dockerfile上的EXPOSEENV行,以使服务分别在http:// https / 5000/5001的典型开发端口上运行,但是我得到了结果相同。

我还尝试将运行命令运行为: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,但我无济于事。

最后,我注意到我无法ping通172.17.0.1或172.17.0.3 IP地址。我认为这一定与它有关,但我不知道到底是什么。

我很茫然。我现在不知道该怎么办。谁能给我任何指导?

0 个答案:

没有答案