安装卷时,docker 映像内的文件消失

2024-04-01

docker 镜像内部有几个文件/tmp目录。

Example

/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然后文件就会出现。

But 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;DR

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

My env

  • 乌班图18.04
  • 泊坞窗 19.03.6

From: https://docs.docker.com/storage/bind-mounts/ https://docs.docker.com/storage/bind-mounts/

挂载到容器上的非空目录中 如果您绑定挂载到容器上的非空目录,则该目录的现有内容将被绑定挂载遮盖。这可能很有用,例如当您想要测试应用程序的新版本而不构建新映像时。然而,这也可能令人惊讶,这种行为与 docker 卷的行为不同。

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

不,它不会比较它们中谁拥有文件;而是比较它们。无论如何,它只是用主机上的目录覆盖容器内的目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安装卷时,docker 映像内的文件消失 的相关文章

随机推荐