docker数据卷:
- 数据卷是目录或文件,不是块设备。
- 容器可以读写volume中的数据。
- volume数据可以持久化保存。
docker提供了两种卷:
- bind mount
- docker managed volume
1.bind mount
3.以只读模式挂载
优点:bind mount必须指定host文件系统路径,限制了移植性。;docker managed volume 不需要指定mount源。
1.不指定mount源挂载
2.进入docker卷挂载的目录下,访问本地发现可以访问
1.卷插件概念
1.docker 卷默认使用的是local类型的驱动,只能存在宿主机,
跨主机的volume就需要使用第三方的驱动,可以查看一链接:https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins
2.docker官方只提供了卷插件的api,开发者可以根据实际需求
定制卷插件驱动。https://docs.docker.com/engine/extend/plugins_volume/#volume-plugin-protocol
1 .Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,
通过HTTP协议传输RPC风格的JSON数据完成通信。
2.Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省
路径下查找Unix Socket文件,自动发现可用的插件。
3.当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后
端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最
终结合Daemon自身的处理完成客户端的请求
2.卷插件的使用
convoy卷插件实现
(1)支持三种运行方式:devicemapper、NFS、EBS。
(2)以下实验使用nfs方式。
(3)下载软件:
https://github.com/rancher/convoy/releases/download/v0.5.0/convoy.tar.gz
(4)在所有节点提前挂载NFS存储。
搭建nfs文件系统
1.在server1中搭建nfs文件系统
1.删除创建的容器
3.创建docker的卷插件目录并将convoy守护进程开启生成的.sock文件放入/etc/docker/plugins目录下的convoy.spec文件中,docker就可以识别。(其中convoy.spec文件之前是不存在的)
4.第一次运行convoy daemon命令的时候,会在/mnt/nfs目录下生成一个config文件夹,这个文件夹不要删除,不然客户端的convoy命令就会用不了
卷的操作
1.列出卷的信息
2.创建容器挂载到server1的共享目录下
5.server2也创建一个容器并挂载到vol1上
6.进入data目录删除文件
7.server1端可以同步看到效果
删除卷快照
关闭convoy守护进程