【问题标题】:docker inspect not revealing IP Address of the applicationdocker 检查不显示应用程序的 IP 地址
【发布时间】:2019-01-06 09:19:03
【问题描述】:

我正在 Windows 2016 服务器上使用 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 inspect:

 docker inspect 5638e

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

【问题讨论】:

    标签: .net docker dockerfile devops docker-container


    【解决方案1】:

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

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

    您不需要经常运行docker inspect。它通常不会告诉您任何您从 docker run 命令中不知道的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2015-04-19
      • 2020-12-05
      相关资源
      最近更新 更多