安装卷时 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 映像中的文件填充它。
我的环境
- Ubuntu 18.04
- Docker 19.03.6
发件人: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?"
不,它不比较它们中哪个有文件;无论如何,它只会用主机上的文件夹覆盖容器上的文件夹。
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 映像中的文件填充它。
我的环境
- Ubuntu 18.04
- Docker 19.03.6
发件人: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?"
不,它不比较它们中哪个有文件;无论如何,它只会用主机上的文件夹覆盖容器上的文件夹。