> For the complete documentation index, see [llms.txt](https://huataihuang.gitbook.io/cloud-atlas-draft/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://huataihuang.gitbook.io/cloud-atlas-draft/virtual/docker/engine/storage/storage_overview.md).

# Docker应用程序数据

默认情况下在容器中创建的所有文件都存储在一个可写的容器层。这意味着：

* 当容器不存在的时候，数据也不是持久化的，并且如果其他进程需要这个数据，也很难在容器之外获得它
* 容器的可写数据层是和运行容器的host主机紧密联系的。即不容易将数据迁移到其他地方
* 写入到容器的可写入层需要使用一个存储驱动来管理文件系统。这个存储驱动使用Linux内核提供了一个统一文件系统（union filesystem）。和使用数据卷存储数据（即直接将数据写入到主机文件系统）方式相比较，这个扩展抽象降低了数据读写性能。

> 注意：除了静态数据，不要将任何数据存储在Docker的默认读写数据层。线上生产数据，特别是日志文件，应该通过数据卷来存储，以获得最大的存储性能。
>
> 容器的层次文件系统由于需要记录数据层差异，性能非常低。只有直接映射到物理主机的数据卷才绕过了这种层次文件系统，获得了原生的存储性能。
