【问题标题】:Files inside a docker image disappear when mounting a volume安装卷时,docker 映像中的文件消失
【发布时间】:2020-05-19 08:32:38
【问题描述】:

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

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

我的环境

  • Ubuntu 18.04
  • Docker 19.03.6

【问题讨论】:

  • 您将一个空文件夹映射到您的图像中,您想知道为什么它在您的容器内是空的?另外,你到底想达到什么目标?
  • @Smutje 在运行时将空文件夹映射到我的图像。是闹事吗?我的实现是将文件从图像中取出到主机 os 目录。
  • 您认为覆盖文件夹可以实现这一点吗?不,将其映射到其他文件夹并将容器内容复制到第二个文件夹中。
  • @Smutje Ty 兄弟。天才。你救了我的命。那么,如果宿主操作系统的目录是空的,那么容器的目录会覆盖是吗?
  • 我会这么认为

标签: docker mount docker-volume mounted-volumes


【解决方案1】:

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

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

“那么,如果宿主操作系统的目录是空的,那么容器的目录会被覆盖是吗?”

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

【讨论】:

  • 但是有两种类型的挂载“volume”和“bind”。我知道如果您省略显式类型分配,“volume”配置默认为“type=volume”。 Docker 文档非常糟糕。
猜你喜欢
  • 1970-01-01
  • 2021-07-10
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多