如何在Host和Docker之间共享文件夹?

时间:2019-05-23 19:11:06

标签: docker .net-core

我创建了一个C#dotnet core 2.1代码,该代码将在Docker中运行以列出Docker应用文件夹中的文件。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("listing...");
        foreach (var f in Directory.GetFiles(Directory.GetCurrentDirectory()))
        {
            Console.WriteLine(f);
        }
    }
}

我正在Windows 10计算机上的Docker桌面(社区)上运行,并且图像创建如下:

FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS build

WORKDIR /app  
COPY ConsoleApp6/bin/Release/netcoreapp2.1/publish/ .  

ENTRYPOINT ["dotnet", "ConsoleApp6.dll"] 

当我简单地运行docker时,我得到的结果如下:

Docker run

现在我要做的是在代码运行时将文件夹安装到Docker。我在主机上创建一个文件夹c:\data,该文件夹有一个名为test.txt的文件,并在以下命令下运行:

docker run -v c:\data:c:\app test

但是我收到以下错误:

No executable found matching command "dotnet-ConsoleApp6.dll"

1 个答案:

答案 0 :(得分:0)

使用docker装载卷时,将覆盖目录,而不是添加目录。因此,在进行-v c:\data:c:\app时,您会将/app内的所有应用程序文件从容器中隐藏,而只保留了主机c:\data目录中的文件

可能的解决方案
创建入口点脚本:

#!/bin/bash
# Copy all from /temp to /app
cp /temp/* /app
dotnet ConsoleApp6.dll

然后将主机文件夹安装到temp:

docker run -v c:\data:c:\temp test