首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker AUFS如何持久化数据?

Docker AUFS如何持久化数据?
EN

Stack Overflow用户
提问于 2018-09-09 08:52:37
回答 1查看 118关注 0票数 1

我对docker AUFS如何持久化数据有一些疑问。据我所知,中的数据可以持久化,而其他位置则不能。这里举了一个例子,拉出一个mysql容器,它的码头文件在那里,然后执行以下步骤:

  1. test目录下创建一个/opt目录,这个目录不应该在docker容器中持久存在
  2. 登录mysql并创建一个数据库,因此/var/lib/mysql目录添加了一个附加文件
  3. 停止这样的容器,然后重新开始
  4. 提交这样的容器,然后移除容器。
  5. 启动提交的容器并检查数据库是否仍然存在

结果

  • 在第3步之后,所有这些都存在于容器中,包括test目录,我认为不应该在AUFS中持久化。那么,我对码头管理员的了解是否是错的呢?
  • 在第5步之后,我可以看到数据库不存在于新容器中,但是为什么呢?/var/lib/mysql中的文件不应该持久化吗?

这里是我正在运行的对接命令

代码语言:javascript
复制
docker build -td --name mysql_test mysqlImageId

注意:我没有指定-v选项

EN

回答 1

Stack Overflow用户

发布于 2018-09-09 09:44:10

根据我对码头的理解,我期望从您所描述的过程步骤中得到以下结果:

First: data 可以将持久化在停靠容器中--实际上,容器上任何创建、删除或更新文件的操作都将触发AUFS将该文件写入容器层。对于删除或更新,这将隐藏相同文件在较低的图像层的条目。当然,任何写入的数据只会持续到您移除容器。如果您基于同一映像启动一个新容器,则此数据自然不存在。

也是,的目的是从Dockerfile构建映像。你不能用它启动一个容器。

关于你的观察

  • 步骤3之后的----我希望您的所有数据仍然存在,因为停止并重新启动容器层时,容器层将保持不变。停止只会杀死保持容器活动的主进程,并且start通过执行相关的入口点脚本重新启动主进程。
  • 在步骤5之后,我仍然期望您的数据在那里,因为您已经将容器提交到一个新的映像中。这个映像现在应该包括修改过的容器层。当您调用docker提交时,请记住,这不是更新原始映像,而是创建一个新映像。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52242879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档