.Net8.0 打包镜像以及启动容器

Docker 常用命令

Docker 是一种用于构建、打包和运行应用程序的容器化工具,以下是一些常用的 Docker 命令及其说明:

1. Docker 基础命令

docker version # 查看 Docker 的版本信息
docker info # 查看 Docker 系统信息
docker build -t <image_name> . #构建镜像
docker pull nginx # 从 Docker Hub 下载nginx镜像
docker images #列出本地的镜像
docker run -d nginx # 以后台模式运行 nginx
docker ps # 显示正在运行的容器
docker ps -a # 显示所有容器(包括已停止的)
docker stop <container_id> #停止运行中的容器
docker start <container_id> # 启动已经停止的容器
docker restart <container_id> #重启容器
docker rm <container_id>#删除一个容器
docker rmi <image_id> #删除镜像
docker logs <container_id> #查看容器日志
docker exec -it <container_id> /bin/bash # 进入容器的终端
docker run -it ubuntu bash # 运行 ubuntu 容器并进入交互模式

打包 .NET 应用为 Docker 镜像

打包 .NET 应用为 Docker 镜像需要创建一个 Dockerfile,定义构建和运行应用的步骤。

1. 创建一个 .NET 项目

用VS创建一个Net8.0的web api项目,勾选启用容器支持.

2. 创建 Dockerfile

项目文件夹目会有一个名为 Dockerfile 的文件,这个是一个用在Linux下创建镜像的文件,要注意下Dockerfile是在解决方案文件夹还是项目文件夹,文件在不同的地方,下面COPY命令的路径会不一样,我这里是项目文件夹
内容如下:

# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。
# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
# 此阶段用于生成服务项目
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication10.csproj", "."]
RUN dotnet restore "./WebApplication10.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "./WebApplication10.csproj" -c $BUILD_CONFIGURATION -o /app/build
# 此阶段用于发布要复制到最终阶段的服务项目
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication10.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication10.dll"]

3. 构建 Docker 镜像

使用以下命令构建 Docker 镜像:

docker build -t mywebapp .

image
image
image

4. 运行 Docker 容器

镜像构建完成后,使用以下命令运行容器:

docker run -d -p 8088:80 --name mywebapp_container mywebapp
  • --name 容器的名字。
  • -d 表示以后台模式运行容器。
  • -p 8088:80 表示将容器的 80 端口映射到主机的 8088 端口。

image

访问 http://localhost:8088 应该可以看到 .NET Core 应用运行的结果。

posted @   长空nice  阅读(413)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示