跳至页脚内容
Iron Academy Logo
学习 C#
学习 C#

其他类别

使用 .NET CLI 轻松实现 C# 应用程序的容器化

Tim Corey
9m 57s

容器是一种功能强大的工具,但对于许多开发人员来说,将 C# 应用程序放入容器的想法会让他们感到不知所措。 手动设置 Dockerfile 和处理依赖关系可能比较复杂。 不过,正如 Tim Corey 在视频中解释的那样,.NET CLI 简化了这一过程,使开发人员无需 Dockerfile 即可将应用程序容器化。

在本文中,我们将使用 Tim 的视频"使用 .NET CLI 轻松实现 C# 应用程序的容器化"中的逐步方法,深入了解 C# 应用程序的容器化。根据 Tim 的指导,我们将了解如何毫不费力地将 .NET 应用程序发布到 Docker 容器中。

.NET CLI for Containers 简介

在视频的开头,Tim 解释了容器化的必要性。 他强调,虽然容器是一个很好的工具,但设置 Dockerfile 并正确配置的过程可能很复杂。

Tim 介绍了一种使用 .NET CLI 的简单方法,而不是手动创建 Dockerfile。 这种方法允许开发人员创建容器化应用程序,而无需手动编写 Dockerfile。

Tim 还说明,该视频是他的 10 分钟培训系列的一部分,该系列侧重于快速有效地介绍技术主题。

应用程序设置

Tim 首先以一个最简单的 Web API 应用程序为例。 该应用程序包含一个名为/messages的单一端点,可返回一些数据。

为了在容器化之前演示应用程序的行为,Tim 在本地运行了该应用程序。 通过访问/messages端点,他确认它在容器外部可以正常工作。

在进行容器化之前,他还要检查:

  • Docker 已在他的机器上安装并运行。
  • 开始时没有现有的 Docker 映像或容器。

这样可以确保在创建新容器时,我们可以清楚地看到变化。

为容器化做准备

为了将应用程序容器化,Tim 移动到项目目录下的命令行。 然后,他运行以下命令:

dotnet publish -o:Linux -a:x64 -p:PublishProfile=DefaultContainer -c:Release

Tim 将对命令的每个部分进行分解:

  • -o:Linux → 将应用程序发布为基于Linux的容器。
  • -a:x64 → 指定架构为64位。
  • -p:PublishProfile=DefaultContainer → 使用默认容器设置。
  • -c:Release → 以发布模式发布应用程序以获得更好的性能。

Tim 强调,Linux 容器优于 Windows 容器,因为 Windows 容器主要是作为 .NET Framework 应用程序的桥梁。

发布和创建容器

一旦执行了发布命令,Tim 就会解释说,.NET CLI 会自动确定必要的配置,并将所有内容打包到一个容器中。 他指出

  • 这种方法不需要 Dockerfile。
  • 该流程可在一个步骤中构建应用程序并将其容器化。
  • 使用的基础映像是 Microsoft 的 .NET 8 运行时容器。

发布后,他检查Docker Desktop并确认已创建新容器映像background-demo。 初始容器大小为 221 MB。

Tim 向观众保证,以后可以缩小翻译篇幅。

运行容器

为了测试容器化应用程序,Tim 直接从 Docker Desktop 启动容器。由于还没有正在运行的容器,他点击了 "运行 "并设置了一个可选设置:

  • 他将容器的内部端口(随机分配)映射到主机上的 8080 端口。

启动后,他使用网络浏览器访问应用程序。 最初,访问根URL会出现404错误,但导航到/messages成功显示预期数据。

蒂姆强调了重要的一点:

  • 应用程序在容器内以 UTC 时间运行,可能与本地机器的时区不同。

他还指出,由于应用程序是在发布模式下发布的,因此 Swagger UI 默认是禁用的。

优化容器大小

在这一点上,默认容器大小为 221 MB,Tim 认为这是相当大的。 为了缩小篇幅,他引入了一个浅色底图。

通过修改jammy-chiseled,一个更小的基于Ubuntu的映像:

builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");
builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");

然后,他重新运行发布命令,并在重建容器后再次检查映像大小。

新图片大小为 113 MB,减少了约 100 MB! 尽管尺寸较小,但应用程序的功能完全相同。

删除和重新创建容器

Tim 演示删除容器以清理工作区。 不过,Docker 镜像仍然可用,因此在需要时可以重新创建容器。

他强调,一旦构建了容器,就可以:

  • 在本地运行,用于开发和测试。
  • 推送到 Docker Hub 或 Azure Container Registry 等容器注册中心。
  • 用作云部署网络应用程序的基础。

结论和最终想法

Tim 在视频最后强调了使用 .NET CLI 进行容器化的主要优势:

1.无需 Dockerfile - .NET CLI 会自动处理一切。 2.过程简单快捷--只需一个命令,应用程序就能被容器化。

  1. 更小的、优化的映像——使用jammy-chiseled减少容器大小。 4.无缝部署 - 容器可以推送到各种云服务。

最后的想法

Tim 使用 .NET CLI 对 C# 应用程序进行容器化的方法简单、快速、有效。按照他的方法,开发人员无需丰富的 Docker 知识就能创建和优化容器。

通过利用 Linux 容器、优化的基础镜像和精简的发布命令,这项技术可以让开发人员以最小的工作量高效地将应用程序容器化。

如果您想深入了解,请务必查看 Tim Corey 的视频。 它提供了整个过程的清晰、循序渐进的演练。

Hero Worlddot related to 使用 .NET CLI 轻松实现 C# 应用程序的容器化
Hero Affiliate related to 使用 .NET CLI 轻松实现 C# 应用程序的容器化

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我