文件为空,共享卷

时间:2019-05-04 13:23:19

标签: docker

我对docker有一点问题。 我试图在计算机上使用卷共享。我可以在计算机上看到这些文件,但是它们在我的容器中是空的。

我尝试在容器的/ root(共享卷之外)中创建一个文件,并且我可以看到该文件而没有任何问题。 如果我执行echo test > test.txt(在我的共享卷中),则文件内容为空。

我执行此命令:

docker run -v "D:\My App:/home/app" -it MyImage /bin/bash

在/ home / app文件夹中,我可以在计算机上看到文件。但是如果我这样做:

cat /home/app/test.txt

它告诉我文件中没有任何内容。有文本时(文件存在)

如果从容器中创建文件,则在共享卷中,可以在计算机上找到该文件(该文件不为空)。 如果我从计算机上创建文件,则会在容器中找到它,但是当我尝试显示它时该文件为空。

当前,当我做一只猫test.txt时,它什么也没显示。 这应该显示this is a test

1 个答案:

答案 0 :(得分:0)

请先检查Docker的Windows设置:

Shared Drive

如果您的D:\驱动器是共享的,则在您的容器中看不到太多内容。

docker/for-win issue 25指出了多个可能的问题:

如果您使用的是Docker Toolbox:

  

在我的案例中,Docker Toolbox在Virtualbox中创建了一个名为default的VM,并在VM中添加了Shared Folder; Virtualbox -> default (VM) -> Settings -> Shared Folders -> Add

     

然后,您可以在计算机中指定路径,也可以在VM中指定映射路径,例如:

     
      
  • 第一个字段是您计算机中的路径,例如D:\ my \ app
  •   
  • 第二个是VM中的路径,例如/ my-vm / app
  •   
  • 选择自动安装
  •   

另一个:

  

我学习时遇到的一个问题是,尝试在容器中装入一个卷,但是有一个冲突的文件夹。
  例如,我将创建工作目录/foo/bar,然后尝试为/foo/bar/private使用一个卷,但是在我的初始安装中已经有一个名为private的文件夹。
  我不会看到任何错误,但是会看到第一个文件夹,而不是我的第二个卷

或者:

docker/for-win issue 2151:“ 从Linux WSL实例挂载的卷无法在容器中解析”。
它指的是“ how to use Docker with WSL”。

  

我们需要做的最后一件事就是进行设置,以使卷挂载工作。这让我绊了一会儿,因为请检查一下……

     

使用WSL时,Docker for Windows希望您以与以下格式匹配的卷路径:/c/Users/nick/dev/myapp

     

但是,WSL不能那样工作。而是使用/mnt/c/Users/nick/dev/myapp格式。
  老实说,我认为Docker应该更改使用/mnt/c的路径,因为它可以更清楚地了解正在发生的事情,但这是又一次的讨论。