多年来,Docker 容器彻底改变了开发人员创建、共享和运行应用程序的方式。凭借其灵活的设计,Docker 容器确保了跨各种平台的环境,从而简化了可靠部署应用程序的过程。与 .NET 集成后,开发人员可以利用 Dockers 功能来简化 .NET 应用程序的开发和部署阶段。本文深入探讨了将 Docker 容器与 .NET 应用程序配合使用的优点,并提供了入门指南。

最完美的扩展Docker + .NET API:简化部署和扩展_容器

图片由Docker提供

为什么选择 Docker for .NET?

1. 一致的开发环境

        Docker 容器封装了运行应用程序的所有依赖项和配置,从而保证了开发、测试和生产环境之间的一致性。通过利用 Docker,开发人员可以避免“它适用于我的机器”问题的典型陈述,因为他们可以创建跨各种开发团队和设备完美运行的环境。

2. 简化的依赖关系管理

        Docker 消除了在开发人员计算机上手动安装和管理依赖项的需要。通过在 Docker 文件中指定依赖项,开发人员可以毫不费力地将其 .NET 应用程序与库和依赖项捆绑在一起,从而减少设置时间并最大限度地减少兼容性问题。

3. 可扩展性和资源效率

        由于其性质和容器化技术,Docker 非常适合水平或垂直扩展 .NET 应用程序。开发人员能够使用 Docker Swarm 或 Kubernetes 轻松设置其应用程序的实例,这有助于优化资源使用并提高应用程序性能。

4. 简化部署流程

        Docker 简化了 .NET 应用程序的部署。开发人员能够将其应用程序包装到 Docker 映像中。这些可以部署到任何与 Docker 兼容的环境,包括本地服务器、AWS 或 Azure 等云平台,甚至 IOT 设备。这不仅简化了部署过程,还加快了 .NET 应用程序的发布周期

从 Docker 和 .NET 开始

步骤 1:安装 Docker

        通过导航到 Docker 桌面,安装 Docker 很容易。Docker 桌面适用于 Windows、Mac 和 Linux。我已经下载并安装了适用于 Windows 的它。安装后,Docker (whale) 图标将显示在系统侧托盘上,如下所示。当您单击该图标时,它将打开 Docker 桌面仪表板,如下所示。您可以查看容器、映像、卷、内部版本和扩展的列表。在下图中,它显示了我在本地计算机上创建的容器列表。

最完美的扩展Docker + .NET API:简化部署和扩展_运维_02

步骤 2:创建 .NET 应用程序

使用所选工具(如 Visual Studio、Visual Studio Code 或 the.NET CLI)创建 .NET 应用程序。例如,您可以直接从命令行使用以下命令。

PowerShell

1
dotnet new web -n MinimalApiDemo
2
  • 1.
  • 2.
  • 3.
步骤 3:使用 Docker 设置应用程序

        在 .NET 项目的根文件夹中创建一个 Dockerfile,以指定应用程序的 Docker 映像。下面是在上一步中创建的 ASP.NET Core 应用程序的 Dockerfile 示例。

Dockerfile

1
# Use the official ASP.NET Core runtime as a base image
2
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
3
WORKDIR /app
4
EXPOSE 8080
5


6
# Use the official SDK image to build the application
7
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
8
WORKDIR /src
9
COPY ["MinimalApiDemo.csproj", "./"]
10
RUN dotnet restore "MinimalApiDemo.csproj"
11
COPY . .
12
WORKDIR "/src/"
13
RUN dotnet build "MinimalApiDemo.csproj" -c Release -o /app/build
14


15
# Publish the application
16
FROM build AS publish
17
RUN dotnet publish "MinimalApiDemo.csproj" -c Release -o /app/publish
18


19
# Final image with only the published application
20
FROM base AS final
21
WORKDIR /app
22
COPY --from=publish /app/publish .
23
ENTRYPOINT ["dotnet", "MinimalApiDemo.dll"]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
步骤 4:创建并启动 Docker 映像
通过从终端窗口执行命令(使用小写字母)来创建 Docker 映像。

PowerShell的

1
docker build -t minimalapidemo .
  • 1.
  • 2.

最完美的扩展Docker + .NET API:简化部署和扩展_容器_03

完成构造过程后,即可通过在容器中运行 Docker 映像来启动它。运行以下 docker 命令以启动新容器。

PowerShell的

1
docker run -d -p 8080:8080 --name myminimalapidemo minimalapidem
  • 1.
  • 2.

    您的 API 服务当前在 Docker 容器中运行,可以通过此 localhost 访问,如下所示。

最完美的扩展Docker + .NET API:简化部署和扩展_Docker_04

最完美的扩展Docker + .NET API:简化部署和扩展_docker_05

下面是一些建议的 .NET 应用程序 docker 化策略

1.减小图像尺寸

        通过利用阶段构建、消除依赖关系并最小化 Docker 文件中的层来提高 Docker 映像的效率。

2.利用.dockerignore文件

        生成一个 .dockerignore 文件,以排除文件和目录传输到 Docker 镜像中,从而减小镜像大小并提高构建速度。

3. 确保容器安全

        在Docker容器创建和运行过程中,请遵循安全措施,包括更新基础镜像、进行漏洞扫描和限制容器权限。

4. 将 Docker Compose 用于多容器应用程序

        对于具有服务或依赖项的应用程序,利用 Docker Compose 定义和管理多容器应用程序,从而简化开发和部署过程。

5. 监控容器并排除故障

        使用 Docker 自己的监控工具或第三方解决方案监控 Docker 容器的性能和运行状况。利用 Docker 日志和调试实用程序等工具及时解决问题并提高容器的效率。

        Docker 容器为 .NET 应用程序的开发、打包和部署提供了一个高效的平台。通过容器化这些应用程序,开发人员可以创建开发环境、简化依赖项管理并简化部署过程。无论重点是微服务、Web 应用还是 API,Docker 都提供了一种在各种环境中操作 .NET 应用程序的熟练方法。通过遵循最佳实践并最大限度地发挥 Docker 的功能,开发人员可以充分利用容器化的优势,从而加快构建和部署 .NET 应用程序的过程