如何运行由VS 2017产生的docker镜像

Docker noob在这里…

如何在命令行中正确运行由Visual Studio 2017生成的Asp.Net CORE应用程序的docker镜像?

docker run -it -d -p 80:32769 myappimage 

似乎没有正常工作(图像运行,但我不能浏览到我的应用程序)

注意:我只是使用默认模板在Studio中创build了一个示例ASP.Net Core Web App,并添加了Docker支持(通过单击“添加Docker支持”checkbox)。 当你这样做的时候,Studio会添加一个dockerfile和一些docker-compose文件。

当Visual Studio“运行”图像(通过按F5) – 我可以成功浏览到我的应用程序(通过“ http:// localhost:32789 ”或类似的主机端口,容器内的应用程序在端口80上)。 但我无法弄清楚命令在命令行自己运行它。

Studio添加到项目中的标准Dockerfile是…

 FROM microsoft/aspnetcore:1.1 ARG source WORKDIR /app EXPOSE 80 COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "WebApplication2.dll"] 

对的,这是可能的。 在发布configuration中重build你的解决scheme,并尝试用F5运行docker-compose项目,以确保图像更新和你的应用程序工作正常。 然后执行docker images console命令 。 你会看到像这样的东西:

 REPOSITORY TAG IMAGE ID CREATED SIZE your.app latest 673b79a6bb3d About a minute ago 294 MB 

您所需要的只是从该映像运行一个新的容器,并将其暴露的端口映射到本地主机端口。 默认情况下,暴露的端口是80 (看Dockerfile )。 好吧,运行它:

 docker run -d -p 1234:80 --name some_name your.app:latest 

那么你的应用程序应该可以访问http://127.0.0.1:1234/

说明:

如果设置了“ debugging”configuration,则由Visual Studio创build空的不可操作的图像。 它手动将空容器映射到文件系统,以便进行可能的debugging,“编辑并继续”function等等。 这就是为什么在没有Visual Studio的情况下, dev图像是无用的。 在发布configuration中构build映像以使其可用。

完整的过程在文档中描述: 用于Docker的Visual Studio工具

发布Docker镜像

一旦完成应用程序的开发和debugging周期,Visual Studio Tools for Docker将帮助您创build应用程序的生产映像。 将debugging下拉列表更改为发布并构build应用程序。 工具将生成带有:latest标签的图像,您可以将它推送到您的私人registry或Docker Hub。

你在这里混淆了一些东西。 当您在Visual Studio 2017中使用F5运行项目时,可以使用随机configuration的端口上的IISExpress运行它。

在Docker中,您没有IISExpress,那么您的应用程序仅由Kestrel托pipe(Kestrel始终在IIS / IISExpress后面使用,但它们充当反向代理)。

Kestrel的默认端口是5000,但是你也可以configuration它。 在这里查看我的post,了解更多关于你必须configuration监听ip /端口的方法。