您的位置:首页 >.Net部署Docker-v指令使用详解
发布于2026-05-03 阅读(0)
扫一扫,手机访问
之前接触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 字段,就能看到完整的挂载源和目标路径了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9