挂载卷时Docker映像中的文件消失

时间:2020-05-19 08:32:38

标签: docker

在docker映像内部,/tmp目录中有多个文件。

示例

/tmp # ls -al
total 4684
drwxrwxrwt    1 root     root          4096 May 19 07:09 .
drwxr-xr-x    1 root     root          4096 May 19 08:13 ..
-rw-r--r--    1 root     root        156396 Apr 24 07:12 6359688847463040695.jpg
-rw-r--r--    1 root     root        150856 Apr 24 06:46 63596888545973599910.jpg
-rw-r--r--    1 root     root        142208 Apr 24 07:07 63596888658550828124.jpg
-rw-r--r--    1 root     root        168716 Apr 24 07:12 63596888674472576435.jpg
-rw-r--r--    1 root     root        182211 Apr 24 06:51 63596888734768961426.jpg
-rw-r--r--    1 root     root        322126 Apr 24 06:47 6359692693565384673.jpg
-rw-r--r--    1 root     root          4819 Apr 24 06:50 635974329998579791105.png
.
.
.

当我键入命令以运行此图像->容器时。

sudo docker run -v /home/media/simple_dir2:/tmp -d simple_backup

Expected behavior是如果我运行ls -al /home/media/simple_dir2 然后出现文件。

但是actual behavior中没有/home/media/simple_dir2

另一方面,如果我运行相同的图像而没有音量选项,例如

sudo docker run -d simple_backup

然后使用

输入该容器
sudo docker exec -it <simple_backup container id> /bin/sh

ls -al /tmp

然后存在文件。

摘要

我希望将卷安装到包含docker映像内的文件的目录。

我的环境

  • Ubuntu 18.04
  • Docker 19.03.6

1 个答案:

答案 0 :(得分:0)

来自:How do I get the path of the assembly the code is in?

装入容器上的非空目录 如果您将绑定安装到容器上的非空目录中,则该目录的现有内容会被绑定安装遮盖。这可能是有益的,例如当您要测试应用程序的新版本而不构建新映像时。但是,这也可能令人惊讶,并且此行为不同于docker卷的行为。

“因此,如果主机操作系统的目录为空,那么容器的目录将被覆盖吗?”

不,它不会比较包含文件的文件;不管用什么,它只会覆盖主机上的容器上的文件夹。