码头工人检查不透露应用程序的IP地址

时间:2019-01-05 21:24:57

标签: .net docker dockerfile devops docker-container

我正在Windows 2016 Server上使用Docker构建ASP.NET Web API应用程序。

这是我的dockerfile的外观:

FROM microsoft/dotnet-framework:4.7.2-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY TestWebAPI/*.csproj ./TestWebAPI/
COPY TestWebAPI/*.config ./TestWebAPI/
RUN nuget restore

# copy everything else and build app
COPY TestWebAPI/. ./TestWebAPI/
WORKDIR /app/TestWebAPI
RUN msbuild /p:Configuration=Release


FROM microsoft/iis:10.0.14393.206

SHELL ["powershell"]


FROM microsoft/aspnet:4.7.2 AS runtime
WORKDIR /inetpub/wwwroot
COPY --from=build /app/TestWebAPI/. ./

RUN Remove-Website -Name 'Default Web Site'
RUN New-Website -Name 'TestWebApi' -Port 80 \
    -PhysicalPath 'c:\inetpub\wwwroot' -ApplicationPool '.NET v4.5'
EXPOSE 80

CMD Write-Host IIS Started... ; \
    while ($true) { Start-Sleep -Seconds 3600 }

然后我执行以下命令来构建和运行容器:

docker image build --tag testwebapi --file .\Dockerfile .

docker container run --detach --publish 80 testwebapi

然后我用容器的沙箱ID运行docker check

 docker inspect 5638e

enter image description here

它显示了我有关容器的信息,但IP地址列键为空。 如何找到IP地址,这里出了什么问题?

enter image description here

1 个答案:

答案 0 :(得分:0)

没关系:这个IP地址(如果存在)对于大多数目的来说是无用的。您无法从Docker空间外部可靠地访问它,并且无法从另一个容器Docker提供DNS服务,以便通过其docker run --name名称可以访问该容器。

如果您尝试建立从主机(可能是浏览器)上的某个内容到容器的连接,则您的--publish 80选项将使Docker选择一个端口并将其转发到容器中的端口80。那应该在docker inspect输出(under "NetworkSettings")中。不过,更典型的是自己选择端口:如果您--publish 8765:80,则知道主机上的端口8765。 (这通常缩写为-p。)

您通常不需要运行docker inspect。它通常不会告诉您使用docker run命令尚不了解的任何内容。