如何容器化你的 ASP.Net Core
Docker 相比 虚拟机 具有更轻量级,更便捷的特性,为什么这么说呢?虚拟机通常打包了完整的操作系统,而容器只仅仅打包了你的应用程序,运行环境及相关依赖库,Docker 是一种开源的工具包,帮助你更加方便的构建,部署,管理容器。
容器通常被定义为包含了 代码和相关依赖库
的应用程序软件单元,这里的 单元
意味着应用程序运行在拥有自己的独立环境上,言外之意就是容器和容器之间是相互隔离的,值得注意的是,虽然容器之间是隔离的,但它们还是共享一个操作系统,这个操作系统可以是 Windows 或者 Linux,这也是Docker的诱惑点之一,这篇文章我们将会讨论如何在 Windows 平台上使用 Docker 部署 ASP.Net Core。
Windows 上安装 Docker
要想在 Windows 上安装 Docker,可以参考官方链接:https://docs.docker.com/docker-for-windows/install/ ,由于篇幅的原因,这里就不赘述了,根据文档所述安装好之后,可以使用如下命令来测试 Docker 是否已经安装成功。
docker --version
创建含 Docker 的 Asp.Net Core 项目
使用 Visual Studio 2019 创建 ASP.Net Core Web Application 模板的时候,记得勾选一下 Enable Docker Support
,在 OS 处选好 Windows 即可,如下图所示:
当项目创建好之后,解决方案下会自动生成一个 Dockerfile 文件,如下图所示:
Dockerfile 大体如下:
FROM microsoft/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
Dockerfile 的目的主要是用来描述如何构建 docker images,你也可以根据自己的场景修改默认的 dockerfile ,比如说修改 From 镜像名将 host 从 windows 切换到 linux 上。
部署 ASP.Net Core 到 Docker
首先通过 Visual Studio 对项目进行 build,然后用管理员模式开启 cmd 窗口,在命令窗口上输入如下命令。
docker build -t dockersample .
上面的命令将会把应用程序构建成名为 dockersample 的镜像,下图就展示了这个 build 的过程。
images 生成好之后,接下来就可以通过 images 实例化出一个 application 容器,使用如下命令即可。
docker run -d -p 8080:80 --name myapp dockersample
上面的 myapp
表示你的容器名字, 后面的 dockersample
就是之前构建好的镜像名,如果一切正常,此时应用程序就成功跑在 container 上了,你可以通过浏览器键入 http://localhost:8080/api/values
地址来调用 ValuesController.Get()
方法判断是否一切正常。
Docker 的一些常用命令
要想列出所有的 images,可以使用如下命令。
docker image ls
要想列出所有的容器,使用如下命令。
docker container ls –all
要想停止容器,使用如下命令。
docker stop containername
要想删除某一个容器,可以使用如下命令。
docker rm containername
值得注意的是,如果要删除的容器正在运行中,此时你是删除不掉的,正确的做法是先停止容器,然后再删除。
容器给了应用程序极小轻量的运行环境,相比虚拟机,容器更加轻量级,而且容器一旦启动,你的应用程序几乎同时启动,Docker 是一种开源的容器化解决方案,现如今也是主流的容器化方式,关于更多的 Docker 讨论会在后面的文章中一一展开。
译文链接:https://www.infoworld.com/article/3314897/how-to-dockerize-an-aspnet-core-application.html
如何容器化你的 ASP.Net Core相关推荐
- ASP.NET Core Web应用容器化
*前请确保已经有正常的Docker环境.本地已经安装了.NET Core SDK[此处为2.2],这里是部署在Windows Server 2016上的Docker* 创建项目,确保项目正常运行 ## ...
- Linux中以单容器部署Nginx+ASP.NET Core
正如 前文提到的,强烈推荐在生产环境中使用反向代理服务器转发请求到Kestrel Http服务器,本文将会实践将Nginx --->ASP.NET Core 部署架构容器化的过程. Nginx- ...
- ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
上一篇ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器) ,我们说过ASP.NET Core中自带的IOC容器是属于轻量级的,功能并不是很多,只是提供了基础 ...
- ASP.NET Core 中的中间件
前言 由于是第一次写博客,如果您看到此文章,希望大家抱着找错误.批判的心态来看. sky! 何为中间件? 在 ASP.NET Framework 中应该都知道请求管道.可参考:浅谈 ASP.NET ...
- (更新时间)2021年5月18日 ASP.NET Core 笔试题
.NET Core笔试题 文章目录 .NET Core笔试题 1.如何在ASP.NET Core中激活Session功能? 2.什么是中间件? 3.Applicationbuilder的Use和Run ...
- ASP.NET Core 性能优化最佳实践
本文提供了 ASP.NET Core 的性能最佳实践指南. 译文原文地址:https://docs.microsoft.com/en-us/aspnet/core/performance/perfor ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker
对于一个 .NET Core开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级 ...
- ML.NET机器学习、API容器化与Azure DevOps实践(三):RESTful API
通过上文所述案例,我们已经选择了最优回归算法来预测学生的综合成绩,并且完成了基于训练数据集的预测模型训练.从实现上,训练好的模型被保存成一个ZIP文件,以便在其它项目中直接调用以完成机器学习的实践场景 ...
- 一份.NET 容器化的调查小结
小编在上个月在微信公众号"dotnet跨平台" 做了一个针对.NET 容器化的调查:.NET Core 容器化调查,参与人数702人,由于软件定义基础设施方兴未艾,编排和自动化领域 ...
最新文章
- 1024,千家公司程序员幸福指数大比拼!最“幸福”的程序员是你吗?
- word2vec代码_Word2Vec-——gensim实战教程
- 八十八、Webpack打包工具
- SpringMVC之访问静态文件
- Java I/O流InputStream,OutputStream,Reader,Writer
- IOS约束三个按钮等宽等高,均分整个view,
- 在Python中执行JavaScript代码并进行数据交换
- 《构建之法》1、2、3章读后感
- [BZOJ4987] Tree
- Vijos P1398 奖学金【排序】
- VB 6.0 可以使用MQTT
- android 第三方圆弧进度条,Android 圆弧进度条 水平进度条 水波进度条
- 20121223-命令与征服全面变更
- 米的换算单位和公式_一米等于多少分米(常见的长度单位换算公式方法)
- 百度地图的POI帮助文件
- VMware,Inc. (Virtual Machine ware)
- PAP认证、CHAP认证
- idea安装阿里巴巴java规范插件(代码质量管理)安装和使用
- BUAA_OO第三单元总结性博客作业——JML
- SwitchHosts的使用