Docker Volume 理解
Docker Volume 理解
Manage data in Docker
根据 Docker 官方文档 Manage data in Docker 中的描述,默认情况下在 container 中创建的文件被存储在 一个可写容器层(a writable container layer) 。这意味着:
- 当容器不存在后(rm 等操作)数据会丢失,而且容器外其他程序或容器很难使用这些数据。
- 当容器运行时容器的可写层与宿主机紧密耦合。不容易将数据移动到其他地方。
- 将数据写入容器可写层需要一个额外的称之为 storage driver 的系统去管理文件系统。这个 storage driver 与使用 data volume 相较而言性能较差
Docker 提供了两种存储文件到宿主机的方法
- volumes
- bind mounts
如果 Docker 运行在 Linux 系统中,可以使用 tmpfs mounts 。如果运行在 Windows 系统中,可以使用 named pipe
Docker 官方建议使用 volumes 方式去存储容器数据到本地宿主机。
Backup, restore, migrate data volume
以下方法是官方给出的对 volumes 最佳的管理方案,包括备份,恢复,迁移。在该方案中官方虽然没有给定一个名词,但通常称为 Data Container 的方案,即使用一个仅包含数据、配置、静态文件的容器(该容器不会处于运行状态),去共享数据,这个 Data Container 可以认为是一个 volumes 的规范或 shape
以下所使用的 image 为 Alpine
- 创建一个 Data Container 命名为 dbstore
docker run -v /dbdata --name dbstore