安装卷时 docker 图像中的文件消失

Files inside a docker image disappear when mounting a volume

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

然后文件存在。

TL;DR

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

我的环境

发件人:https://docs.docker.com/storage/bind-mounts/

Mount into a non-empty directory on the container If you bind-mount into a non-empty directory on the container, the directory’s existing contents are obscured by the bind mount. This can be beneficial, such as when you want to test a new version of your application without building a new image. However, it can also be surprising and this behavior differs from that of docker volumes.

"So, if host os's directory is empty, then container's directory will override is that right?"

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