bash - 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
事实上,它是空的。
我错过了什么吗?
解决方案
转到 /var/lib/docker/volumes 并运行ls命令。他们用随机散列字符串命名了几个目录。然后从这些目录运行ls命令。也许您找到了挂载点目录。例如:
ls /var/lib/docker/volumes/e9500fce66618003a372d9915137847c207b44432fdb503fb56b6c9dd507ce6c/_data
推荐阅读
- openid - ADFS(作为 SP)是否支持与 OpenID IDP 集成
- symfony - 带有 symfony 4 的 VichUploaderBundle:没有扩展能够加载“映射”的配置
- java - 有时 IoException:Mark Invalid Jsoup Android App
- unity3d - 与分辨率相关的对象生成
- c++ - 注释一行使代码工作,而没有它,代码不起作用
- r - 如何使用 dplyr 在 R 中的数据库上动态创建新变量/列?
- java - swagger-ui 和 spring webflux 出现 404 错误
- c# - 如何在 .net core 3.1 中使用 ConfigurationBulder 绑定到配置类
- javascript - Cloudflare 不会阻止对我的 nuxt 应用程序的访问
- java - 如何从 URL / String 中获取特定的字符序列