首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在主机和Docker之间共享文件夹?

如何在主机和Docker之间共享文件夹?
EN

Stack Overflow用户
提问于 2019-05-24 03:11:06
回答 1查看 51关注 0票数 0

我创建了一个Docker dotnet2.1核心代码,它将在C#中运行,以列出Docker应用程序文件夹中的文件。

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("listing...");
        foreach (var f in Directory.GetFiles(Directory.GetCurrentDirectory()))
        {
            Console.WriteLine(f);
        }
    }
}

我在Windows 10机器上的Docker Desktop (社区)上运行,镜像创建如下:

代码语言:javascript
复制
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上。我在主机上创建了一个文件夹c:\data,其中只有一个名为test.txt的文件,并运行以下命令:

代码语言:javascript
复制
docker run -v c:\data:c:\app test

但我得到的错误如下:

代码语言:javascript
复制
No executable found matching command "dotnet-ConsoleApp6.dll"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 03:19:06

当您使用docker挂载卷时,您将覆盖该目录,而不是添加到其中。因此,在执行-v c:\data:c:\app时,您将从容器中隐藏/app中的所有应用程序文件,只留下存在于主机的c:\data目录中的文件

可能的解决方案

创建入口点脚本:

代码语言:javascript
复制
#!/bin/bash
# Copy all from /temp to /app
cp /temp/* /app
dotnet ConsoleApp6.dll

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

代码语言:javascript
复制
docker run -v c:\data:c:\temp test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56281587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档