docker的数据管理:
数据卷:
一个绕过UFS的特殊目录,可供多个容器使用。
特性:
1.可以在容器之间共享和重用
2.数据卷的修改会立即生效
3.更新数据卷不影响image
4.数据卷会一直存在,直到没有容器使用
方式1:创建数据卷
创建容器的时候使用-v CONTDIR 指定数据卷。
方式2:挂载宿主机的目录作为数据卷
创建容器的时候使用-v HOSTDIR:CONTDIR
方式3:挂载宿主机的文件作为数据卷
创建容器的时候使用-v HOSTFILE:CONTDIR
注意:此方法不推荐,例如vim等工具会造成文件inode的改变,从而会报错。建议直接挂载文件的父目录。
注意:CONTDIR的权限为rw,也可以使用-v HOSTDIR:CONTDIR:ro指定为只读。
HOSTDIR中的文件在容器关闭后仍然存在,所以可以用来存放数据。
数据卷容器:
本质上也是个容器,专门用来提供数据卷给其他容器挂载。
方法如下:
创建容器的时候使用-v CONTDIR 指定数据卷。
其他容器使用数据卷容器:
创建容器时使用--volumes-from CONTNAME来挂载,指定的container并不需要保持运行状态。
数据卷的备份、恢复、迁移:
1.备份:
假设有个容器A启动时创建了名为/test的数据卷。
新创建一个容器使,使用--volumes-from A ,同时-v 一个宿主机目录/abc到/def
这样新容器中就有2个目录,/test为数据卷,/def为宿主机/abc的挂载。
可以使用tar命令 来备份/test的内容到/def下。这样数据卷中的内容就被备份到宿主机/abc中。
2.恢复
和备份类似,也是通过创建一个新的容器,同时挂载本地文件夹和要回复数据的数据卷容器,然后通过tar等命令来恢复。