首页 > 网络编程 >.Net部署Docker-v指令使用详解

.Net部署Docker-v指令使用详解

来源:互联网 2026-04-08 15:44:03

Docker的-v指令使用记录 前言 最初接触Docker,是为了解决.NET项目部署的难题,特别是部署已编译的产物。当时使用的Dockerfile结构大致如下: FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE

Docker的-v指令使用记录

前言

最初接触Docker,是为了解决.NET项目部署的难题,特别是部署已编译的产物。当时使用的Dockerfile结构大致如下:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 5031
EXPOSE 7031

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
ENTRYPOINT ["dotnet", "Personalblog.dll"]

后续的流程包括构建镜像和创建容器,使用的命令非常直接:

docker build -t app .
docker run -d -p 80:80 --name app app

遇到的问题

按照上述流程操作,项目确实能够成功运行。但很快会遇到一个实际问题:当项目代码需要更新时,必须首先删除容器,接着删除镜像,才能重新完成部署。如果仅仅删除容器而保留镜像,新创建的容器仍然会运行旧的代码。

问题产生的原因是什么?

核心原因在于没有进行主动的目录挂载。Docker默认会使用一个随机生成的名称挂载一个数据卷。若不删除镜像,这个默认卷将持续存在,导致所有新创建的容器都读取同一份过时的数据。

解决方案

解决此问题的方法并不复杂,关键在于使用 -v 指令。

具体的命令调整如下:

docker run -d -p 80:80 -v 项目路径:/src --name app app

采用此方式部署后,容器内的 /src 目录将直接映射到本地的项目路径。此后项目若有更新,只需删除旧的容器,并用上述命令重新创建新容器即可,完全无需操作镜像。

需要说明的是,这里挂载的路径 /src 是基于.NET项目Dockerfile中 WORKDIR /src 的设置。其他类型的项目挂载点可能不同。尝试修改此路径时,容器启动似乎仍会自动生成一个src目录,其具体机制有待进一步研究。若有更优雅的解决方案,欢迎探讨与分享。

扩展信息

若需查看某个容器的详细挂载信息,可以使用命令:docker inspect 容器名。在输出的JSON信息中,定位 Mounts 字段,即可查看完整的挂载源路径与目标路径。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。