将Docker容器链接到主机文件系统Windows

问题描述

我有一个Web API(dotNetCore 3.1),我正在尝试对其进行Docker化。

当我想将文件写入基本主机时,事情开始变得复杂。 根据我的阅读,这可能与定义“音量” 有关。

让我们说我有这部分代码:

           using (StreamWriter sr = new StreamWriter(@"C:\program\tmp.txt"))
           {
               while (max == -1 || counter < max)
               {
                   try
                   {
                       sr.WriteLine($"Counter: {++counter}");
                   }
                   catch (Exception)
                   {

                       throw;
                   }
                 
               }

           }

我设法建立一个容器并正确运行它,但是可能由于他不知道指定的路径而抛出异常。

这是我的Dockerfile:

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-1903 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["dockerTest/dockerTest.csproj","dockerTest/"]
RUN dotnet restore "dockerTest/dockerTest.csproj"
COPY . .
WORKDIR "/src/dockerTest"
RUN dotnet build "dockerTest.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "dockerTest.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet","dockerTest.dll"]

如果您能帮助我将主机文件系统链接到容器,我会很高兴。

解决方法

使用CLI启动docker容器时,必须使用该选项来安装驱动器。 (您可能需要稍微玩一下主机路径)。

$ docker run -d --name devtest -v C:\data\input.data:/data nginx:latest

容器启动后,您不必使用主机路径

       using (StreamWriter sr = new StreamWriter(@"/data/input.data"))

这在大多数情况下应该起作用。几乎没有曲折。

您还应该考虑使用docker compose文件,这些文件可以为您节省大量的键入和传递太多的命令行参数。

更多信息在这里:

Docker CLI:https://docs.docker.com/storage/volumes/

Docker撰写:https://docs.docker.com/compose/compose-file/#volume-configuration-reference

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...