首页 > 解决方案 > Docker Volume 不持久化数据

问题描述

我正在使用Practical Docker with Python 书学习 docker。

在第 5 章中,作者演示了如何使用 docker volume 来持久化数据。他使用以下命令执行此操作:

# create a volume
docker volume create volume-test

# create a container and attach the volume 
docker run -it --name volume-test --mount source=volume-test,target=/data-volume ubuntu bash  

# write some data to volume-test volume
echo "This is a file created from container having kernel `uname -r`" > docker_kernel_info.txt

然后他停下来取出容器:

docker stop volume-test
docker rm volume-test

之后,他创建了一个附加了相同卷的新容器,并尝试读取docker_kernel_info.txt第一个容器创建的文件:

$ docker run -it --name volume-test --mount source=volume-test,target=/data-volume ubuntu bash
$ cd /data-volume/
$ cat docker_kernel_info.txt

这是从具有内核 4.9.87-linuxkit-aufs 的容器创建的文件。

这就是问题开始的地方。当我创建第二个容器时,我在目录
中看不到任何文件。/data-volume事实上,它是空的。

我错过了什么吗?

标签: bashdocker

解决方案


转到 /var/lib/docker/volumes 并运行ls命令。他们用随机散列字符串命名了几个目录。然后从这些目录运行ls命令。也许您找到了挂载点目录。例如:

ls /var/lib/docker/volumes/e9500fce66618003a372d9915137847c207b44432fdb503fb56b6c9dd507ce6c/_data

推荐阅读