如何在容器中保存数据?

警告

容器被设计为无状态的实例,任何需要持久化的数据,请采用数据库或文件系统保存在容器实例之外,我们不对保存在容器内的数据提供任何保障。当 DaoCloud 需要迁移,或用户扩容容器资源时,容器内的数据将会遗失,并且无法找回。

使用数据库服务

DaoCloud 在服务集成模块中提供了 MySQL、Redis、MongoDB、InfluxDB 等数据服务,如您需要做内容的持久化保存,可以选择使用 MySQL 和 MongoDB。创建的数据服务实例,可以与您的应用进行绑定。

我们还将添加更多数据库服务。

有关服务集成模块的介绍,请参考:「使用 DaoCloud 服务集成功能」。


使用 Volume

除了数据库,您还可以使用 Volume 保存您在容器中产生或使用的文件。一个 Volume 就是在一个或者多个容器里有特殊用途的目录。它绕过了容器内部的文件系统,为持久化数据、共享数据提供了下面这些有用的特性:

  • 容器可以通过把数据写在 Volume 上来实现数据持久化
  • Volume 可以在不同的容器之间共享和重用数据
  • 容器数据的备份、恢复和迁移都可以通过 Volume 实现
  • 通过 Volume 实现多容器共享数据,从而实现应用的横向扩展

您可以在写 Dockerfile 时,把需要持久化、或者频繁更改的文件保存在 Volume 中;在程序运行时,可以通过 Volume 控制器直接修改这些文件(如替换博客主题、或修改程序的 config 文件等),避免重新构建和发布,非常方便。

有关 Volume 的使用技巧和示例,您可以参考:「使用 Volume 实现容器状态持久化


数据备份服务

即将推出。