如何在Docker容器中运行 .NET Core Web 应用程序
在本文中,我将解释容器的概念并演示如何在容器中运行 .NET Core Web 应用程序。
什么是容器以及为什么要使用它们
这是一种常见情况,其中代码在开发人员的机器上运行良好,但在部署在不同的机器上时却不起作用。为了解决这些与环境依赖相关的问题,容器出现了。
您可以使用以下示例将容器可视化,以更好地理解它们。
在早期,使用相同的方法将不同的货物从一个地方运输到另一个地方是非常困难的。运输和包装完全取决于您要运输的物品。例如,有些货物不能通过海路或公路运输。为了解决这个问题,容器的发明是一个突破。容器可以包装任何类型的材料和产品。这些产品的相应环境可以在容器本身中提供或创建。
因此,通过任何媒体运输任何类型的产品变得非常容易。
同样,容器封装了代码及其所有依赖项,因此应用程序可以从一个环境快速可靠地运行到另一个环境,而没有与环境相关的依赖项的麻烦。
有多个供应商提供容器,其中 Docker 是最受欢迎的。在这个例子中,我们将使用 Docker。
在容器中创建和运行 dotnet 核心应用程序的步骤:
使用以下命令创建一个名为“containerapp”的 Web 应用程序
“dotnet new webapp -o containerapp”
在项目根目录“Dockerfile”中创建一个文件。如果您使用的是 Visual Studio,您可以右键单击项目 -> 添加新项目并添加 Docker 支持。它将自动创建一个 docker 文件,而 docker 会为您忽略该文件。
#This is base image of dotnet core application which is created by Microsoft.
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDI /app
# Copy csproj and restore its dependencies such as NuGet packages
COPY *.csproj ./
RUN dotnet restore
# Copy complete project files and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "containerapp.dll", "http://*:5000"]
构建镜像并运行容器
- 创建镜像的命令“ docker build -t containerapp 。”
- 容器应用程序是镜像的名称
- . 用于docker文件目录位置,在本例中是同一个目录。
- 此命令将拉取 docker 文件中提到的所有必需图像
成功执行上述命令后,您可以使用命令“docker images”检查您的镜像。它将列出所有 docker 镜像。
成功创建镜像后,您可以通过以下命令运行容器:
“docker run -d -p 5000:80 –name demo_container containerapp”
- -d 表示在后台运行容器
- -p 表示像外部端口一样映射容器端口:内部端口
- –name 是容器,即 demo_container
- 最后一个参数是镜像名称
“docker ps”命令是列出所有正在运行的容器。
如果你想停止或删除你的容器并删除下面的镜像是执行此操作的命令
- “docker stop containername” 停止容器
- “docker rm containername”删除容器
- “docker rmi imagename”删除镜像
结论
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!