docker数据卷
- docker mount
- docker managed volume
- 卷插件简介
- convoy卷插件
- 删除卷插件、还原
docker数据卷:
- mount到主机中,绕开分层文件系统
- 和主机磁盘性能相同,容器删除后依然保留
- 仅限本地磁盘,不能随容器迁移
docker提供了两种数据卷:
- bind mount
- docke managed volume
docker mount
是将主机上的目录或者文件mount到容器里
-v 指定路径 ,如果不存在,挂载时会自动创建
bind mount 默认权限是 rw , 可以在mount时指定为 ro
彻底删除搭建的harbor
prune的用法:
docker volume prune 删除不用的卷
docker network prune 删除不用的网络
docker container prune 删除关闭的容器容器删除,数据卷还在
bind mount必须指定host文件系统路径,限制了移植性
docker managed volume
docker managed volume不需要指定mount源,docker自动为容器创建数据卷目录
默认的数据卷目录都在 /var/lib/docker/volumes中
如果挂载时指向容器内已有的目录,原有的数据会被复制到volume中
bind mount与docker managed volume的相同点:
两者都是host文件系统中的某个路径
两者都支持单机同步,不能跨主机
为了实现跨主机之间同步,就需要卷插件
bind mount与docker managed volume的不同点:
卷插件简介
- docker卷默认使用的是local类型的驱动,只能存在宿主机,跨主机的volume就需要使用第三方的驱动
- docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动
https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins - docker plugin是以web service的服务运行在每一台docker host上的,通过http协议传输rpc风格的json数据完成通信
- plugin的启动和停止,并不归docker管理,docker daemon依靠在缺省路径下查找unix socket文件,自动发现可用的插件
- 当客户端与daemon交互,使用插件创建数据卷时,daemon会在后端找到插件对应socker文件,建立连接并发起相应的api请求,最后结合daemon自身的处理完成客户端的请求
convoy卷插件
convoy卷插件实现:
- 支持3种运行方式:devicemapper,NFS,EBS
- 以下实验使用nfs方式
- 下载软件:https://github.com/rancher/convoy/releases/download/v0.5.2/convoy.tar.gz
- 在所有节点提前挂载nfs储存
convoy卷插件安装:
showmount -e 查看server6上可挂载的文件夹
在两个主机上同时运行容器,会发现数据目录中的数据时同步的
删除卷插件、还原