由.NetCore在docker部署想到的
今天准备部署.net6 拉取docker时候只有基础镜像。
原谅刚接触.NET CORE,自认为docker之所以能跑.net core,是因为镜像准备好了代理服务器。
也就是早期啊,我们的JAVA要部署得tomcat,php得nginx,同样.net web得iis作为代理服务器,那到了core这里怎么就可以直接运行了呢。
思考一下。
一番资料查找下,真相远比想象的要复杂。
一 CoreCLR下封装的Kestrel
那么 asp.net core 及.net 6实现跨平台的本质。
ASP.NET Core 2.1+为IIS托管新增In-Process模型并作为默认选项(使用IISHttpServer替代了Kestrel,dotnet程序由IIS网站进程w3wp.exe内部托管)。
也主是.netcore内置了服务主机Kestrel,该主机的功能相当于IIS,可以完成对端口的监听及请求的转发,完全可以取代iis。该主机在程序启动时被运行,由于脱离了IIS的束缚,所以也完全可以部署在Linus系统上使用,这就是其跨平台的本质原因。
那么kestrel是个什么东西呢。
他是一个中间件,来处理tcp连接的服务器,并内置了http(包含websocket、SignalR)解析中间件。也就是说,我们完全可以给kestrel添加其它中间件,用来处理非http的连接的业务场景,让kestrel使用一个端口支持多种协议或多协议一个端口一种协议的要求。
详细可以看这两篇,对kestrel应该有了非常清晰的认识与理解:
1.net core 系列之kestrel - 懵懂小门神 - 博客园 (cnblogs.com)
2.深入理解kestrel的应用
二 .Net Core运行周期
再回到.netcore,
我们去找有关.netcore生命周期的文章时,看到很多都会提到,运行的开始是program,你会惊讶,这不是控制台启动的入口吗?
然而的确是这样的。
ASP.NET Core 2.0 : 五.服务是如何加载并运行的, Kestrel、配置与环境 - FlyLolo - 博客园 (cnblogs.com)
在这篇文章中, 非常详细的介绍了Core运行的起点到终点过程。
尤其是那个我们天天可以看到的ConfigureServices与Configure,到底是什么时候启用的。
大体用下面这张图表示:
三 Docker安装与部署
1.centos安装docker
Install Docker Engine on CentOS | Docker Documentation
2.docker基础知识
10分钟快速掌握Docker必备基础知识 - DockOne.io
3.Netcore快速部署docker 示例
将.NET Core部署在Docker - imstrive - 博客园 (cnblogs.com)
以上就是学习.netcore基础原理与发布,资料取自互联网,学习路上少不了大神。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现