GitHub精选 | .NET Core 的 Docker 镜像
nanshan 2024-10-23 11:50 23 浏览 0 评论
《GitHub精选》是我们分享Github中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐有关.NET Core 的 Docker 镜像
背景:
企业通过使用容器,日益实现成本节约、解决部署问题并改进 DevOps 和生产操作。 通过创建 Azure Kubernetes 服务、Azure Service Fabric 等产品,同时与 Docker、Mesosphere 和 Kubernetes 等行业领先者合作,Microsoft 一直在推出适用于 Windows 和 Linux 的容器创新。 这些产品提供容器解决方案,可帮助公司以云的速度和规模生成并部署应用程序,而无需考虑其选用的平台或工具。
Docker 正在逐渐成为容器行业的事实标准,受到 Windows 和 Linux 生态系统领域最重要供应商的支持。 (Microsoft 是支持 Docker 的主要云供应商之一。)将来,Docker 可能会在云端或本地的任何数据中心普及。
Docker 容器、映像和注册表
使用 Docker 时,开发人员会创建一个应用或服务,并将它及其依赖项打包到一个容器映像中。 映像是应用或服务及其配置和依赖项的静态表示形式。
若要运行应用或服务,应用的映像会实例化,以创建一个在 Docker 主机上运行的容器。 最初,会在开发环境或 PC 中测试容器。
开发人员应将映像存储在注册表中,该注册表可充当映射库并在部署到生产业务流程协调程序时使用。 Docker 通过 Docker 中心维护公共注册表;其他供应商为不同映像集合提供注册表,包括 Azure 容器注册表。 或者,企业可以拥有一个本地专用注册表,用于其 Docker 映像。
为 Docker 容器选择 .NET 5 或 .NET Framework
通过 .NET 生成服务器端容器化 Docker 应用程序时,有两种支持的框架:.NET Framework 和 .NET 5。 这两者共享许多 .NET 平台组件,可在它们之间共享代码。 但两者之间存在根本差异,可根据需要实现的目标选择框架。
官网地址:https://dotnet.microsoft.com/download
构建基于微服务的容器化应用程序
微服务提供很多优点,但也会引起新的巨大挑战。创建基于微服务的应用程序时,微服务体系结构模式是基础支柱。
容器设计原则:在容器模型中,容器映像实例表示单个进程。 将容器映像定义为进程边界,可以创建可用于对进程进行缩放或批处理的基元。
设计容器映像时,可在 Dockerfile 中看到入口点定义。 此定义定义了一个进程,其生命周期控制容器的生命周期。 该进程完成,则容器的生命周期结束。 容器可以表示 Web 服务器等长时间运行的进程,但也可表示批处理作业等生存期较短的进程,这些进程以前可能已实现为 Azure WebJobs。
如果进程失败,则容器结束,Orchestrator 接管。 如果 Orchestrator 已配置为使五个实例保持运行,而其中一个实例失败,则 Orchestrator 会创建另一个容器实例,来替换失败的进程。 在批处理作业中,使用参数启动该进程。 进程完成,则工作完成。
基于 Docker 的应用程序的开发流程
无论你更青睐内容丰富、功能强大的 IDE 还是轻量、灵活地级编辑器,Microsoft 都可为你提供用于开发 Docker 应用程序的工具。
Visual Studio(适用于 Windows)。 使用 Visual Studio 的基于 Docker 的 .NET 5 应用程序开发需要 Visual Studio 2019 版本 16.8 或更高版本。 Visual Studio 2019 附带已内置的 Tools for Docker。 通过适用于 Docker 的工具,可以在目标 Docker 环境中开发、运行和验证应用程序。 可以按 F5,直接在 Docker 主机中运行并调试应用程序(单个容器或多个容器),也可以按 Ctrl+F5,编辑并刷新应用程序,而无需重新生成该容器。 要开发基于 Docker 的应用,此 IDE 是功能最强大的选择。
Visual Studio for Mac。 它是一个 IDE,由 Xamarin Studio 演化而来,在 macOS 中运行。 对于 .NET 5 开发,它需要版本 8.4 或更高版本。 对于使用 macOS 计算机工作而又希望使用功能强大的 IDE 的开发者而言,此工具应当是理想之选。
Visual Studio Code 和 Docker CLI。 如果更青睐支持任何开发语言的轻量级跨平台编辑器,可以使用 Visual Studio Code 和 Docker CLI。 此 IDE 是针对 macOS、Linux 和 Windows 的跨平台开发方法。 此外,Visual Studio Code 还支持 Docker 扩展(例如适用于 Dockerfile 的 IntelliSense)和在编辑器中运行 Docker 命令的快捷任务。
实现可复原的应用程序
微服务和基于云的应用程序必须允许最终必然会发生的部分故障。必须设计应用程序,使其可从这些部分失败中恢复。
恢复能力是指从故障中恢复并继续工作的能力。 这并不是指避免失败,而是接受会发生失败这一事实,并以能够避免停机或数据丢失的方式对失败做出响应。 恢复的目标是使应用程序在发生故障后回到完全正常运行的状态。
设计和部署基于微服务的应用程序已经非常具有挑战性。 然而还需要让应用程序在必然发生某种故障的环境中保持正常运行。 因此,应用程序应具有恢复能力。 应将其设计为能够处理部分故障,如网络中断或者云中节点或 VM 故障。 甚至将微服务(容器)移动到群集内的另一个节点,也可能导致应用程序出现间歇性的功能短缺故障。
在基于微服务的应用程序这类分布式系统中,经常会出现部分失败错误。 例如,单个微服务/容器可能会失败,也可能无法在短时间响应,或者单个 VM 或服务器会出现故障。 由于客户端和服务是彼此独立的流程,因此服务可能无法及时响应客户端的请求。 服务可能过载并且对请求的响应速度过慢,或者只是由于网络问题在短时间内无法访问。
例如,请查看 eShopOnContainers 示例应用程序的订单详细信息页。 如果订购微服务在用户尝试提交订单时没有响应,则客户端进程(MVC Web 应用程序)的错误实现(例如,如果客户端代码使用同步 RPC 而没有出现超时)将会无限期地阻止线程等待回应。 每个无响应的等待除了会造成不良用户体验之外,还会消耗或阻止线程,然而线程在高度可缩放应用程序中极有价值。 如果受阻止的线程数量众多,应用程序的运行时最终会耗尽所有线程。 在这种情况下,应用程序会出现全局无响应,而不只是部分无响应,如上图。
除此之外恢复能力还包括:处理部分失败的策略,实现使用指数退避算法的重试,实现复原Entity Framework Core SQL连接,使用IHttpClineFactory实现复原Http请求,通过Polly实现使用指数退避算法的Http调用重试,实现断路器模式,运行状态监视等。
更多详情:https://docs.microsoft.com/zh-cn/dotnet/
相关推荐
- MongoDB 从入门到实战:.NET 平台完整指南
-
一、什么是MongoDBMongoDB是一种功能强大且灵活的NoSQL数据库,适用于处理大规模的半结构化数据和高并发场景。它不依赖于固定的表结构和关系模型,而是以文档的形式存储数据,每个文档可...
- NET Framework安装失败的原因及解决方法
-
大家好我是艾西,一个做服务器租用的游戏爱好者兼网络架构系统环境问题网络工具人。在我们平时使用PC安装某些程序会出现.NETFramework缺失的提示,那么也会有很多的小伙伴搞不懂什么原因导致的,这...
- 这可是全网eNSP安装最完整,最详细的图解,没有之一(常见问题)
-
eNSP安装大纲eNSP安装详细图解篇幅较长,会分三篇更完。急需安装的朋友可以在文末获取图解文档和所需软件工具。ENSP安装常见问题和解决方案Vbox安装错误eNSP在安装的过程当中,经常会出现一...
- 如何在windows 2012安装.NET Framework3.5
-
Windowsserver2012R2,自带的是.NETFramework4.5,如果想装SQLserver2008或者SQLserver2012需要安装.ENTFramework...
- 3款国内可用的「Chrome」扩展下载网站
-
身为程序员,有几个不使用Chrome浏览器提升下编码效率呢?Chrome拥有众多丰富强大的扩展程序,今天给大家分享三个国内可用的Chrome扩展下载网站,收藏一下吧,不然下次就找不到我咯!C...
- 下载 Windows 10 应用商店程序离线包方法
-
有厂商为了图方便,会把Windows10应用商店里面的UMP应用改成EXE程序版本。例如之前「网易云音乐」UMP版本简洁清爽,获得不少用户推荐,后来官方懒得更新了,直接把UMP版本...
- 极速安装!NET Framework 3.5零距离指南!
-
.NETFramework3.5是一款由微软开发的应用程序框架,它为许多Windows应用程序提供了基础支持。它的新版本带来了许多令人兴奋的功能和改进,比如增强的XML和JSON处理能力以及强大的...
- Microsoft.NET离线运行库合集发布 2021
-
软件介绍.NET是微软具有战略意义的框架,也是装机必不可少的框架,想要一个一个安装略显繁琐,再加上很多电脑小白不知道怎么下载,不小心就下载到某某高速加载器,这个运行库极大解决了这个问题,采用微软官方....
- 缺少.net framework 3.5怎么办?(缺少.net4.5.1或以上环境)
-
很多电脑用户在玩某些程序游戏时都会遇到一个头痛的问题,弹出缺少“NETFramework3.5”的提示。微软从Windows8开始默认屏蔽了“.NET3.5”,如果用户有需要就必须选择在线安装...
- Windows11无法正常安装.net 3.5组件的解决方法
-
最近因公司部分电脑升级至Windows11之后,重新安装某些需要加载.net3.5组件的应用软件时,都提示无法完成加载或安装.net3.5而导致无法完成安装。使用离线安装包亦一样无法完成安装。一...
- 离线安装.Net Framework 3.5(离线安装.net framework 4.0)
-
前言.Net3.5已经越来越少用到了,但是偶尔还是会遇到一些老软件需要。而Win10、Win11的系统,直接在控制面板的里添加,经常会添加失败!解决方法首先需要一个系统的ISO镜像来提取sxs文件夹:...
- Jenkins 11个使用技巧,90%以上的人没用过
-
一、Performance插件兼容性问题自由风格项目中,有使用Performance插件收集构建产物,但是截至到目前最新版本(Jenkinsv2.298,Performance:v3.19),此...
- 6款Linux常用远程连接工具,你最中意哪一款?
-
点击上方头像关注我,每周上午09:00准时推送,每月不定期赠送技术书籍。本文2106字,阅读约需6分钟Hi,大家好。远程连接的实现方法有很多,概括地说有两种,一种是用系统自带的远程连接,另外一种是用...
- Linux常用远程连接工具介绍,总有一款适合你
-
作为运维或者网工最常用就是ssh远程和远程桌面工具,本文就介绍几个常用的远程连接工具,你在用哪一款呢SecureCRT介绍:我觉得这个是最好的SSH工具,没有之一。SecureCRT支持SSH,同时支...
- 终极软路由网络设置,ESXi虚拟机安装iKuai+openWrt双路由系统
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:BigBubbleGum本文是软路由系列的第五篇,也是折腾时间最长的一篇,在ESXi下分别独立安装和使用iKuai和openWrt...
你 发表评论:
欢迎- 一周热门
-
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WindowsServer2022|配置NTP服务器的命令
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)