0

在 docker image 里面有几个文件在/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

然后文件存在。

TL;博士

我想在主机上挂载一个卷(目录),并用 docker 映像内部的文件填充它。

我的环境

  • Ubuntu 18.04
  • 码头工人 19.03.6
4

1 回答 1

1

来自:https ://docs.docker.com/storage/bind-mounts/

挂载到容器上的非空目录 如果绑定挂载到容器上的非空目录,则目录的现有内容会被绑定挂载遮盖。这可能是有益的,例如当您想在不构建新映像的情况下测试应用程序的新版本时。但是,这也可能令人惊讶,并且这种行为与 docker 卷的行为不同。

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

不,它不会比较它们的文件。无论如何,它只是用主机上的文件夹覆盖容器上的文件夹。

于 2020-05-19T16:14:30.207 回答