DockerDocker数据卷模式(bind mount与docker managed volume)数据卷插件convoy之NDF部署使用
Posted dezasseis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DockerDocker数据卷模式(bind mount与docker managed volume)数据卷插件convoy之NDF部署使用相关的知识,希望对你有一定的参考价值。
一、数据卷简介
数据卷是一个可供容器用的一个目录,实在本地宿主机上创建的,可以挂载到所有的容器中。
为什么要用数据卷
- docker分层文件系统
性能差
生命周期与容器相同 - docker数据卷
mount到主机中,绕开分层文件系统
和主机磁盘性能相同,容器删除后依然保留
仅限本地磁盘,不能随容器迁移 - docker提供了两种卷:
bind mount
docker managed volume
二、数据卷常用命令
- 数据卷基本命令
docker volume create 卷名称
:创建一个卷
docker volume inspect
:显示一个或多个卷的详细信息
docker volume ls
:列出卷
docker volume prune
:删除所有未使用的本地卷
docker volume rm 卷名称
:删除一个或多个卷 - 创建数据卷命令
docker volume create [OPTIONS] [VOLUME]
Options:
-d, --driver string
:指定卷驱动程序名称
–label list
:设置卷的元数据
-o, --opt map
:设置驱动程序特定选项
三、Docker数据卷模式
01_bind mount
- 将主机上的目录或文件mount到容器里。
- 使用直观高效,易于理解。
-== -v <宿主机路径>:<容器路径>:<权限>==
权限默认为rw
以指定ro,只读
若路径不存在,挂载时自动创建 - 必须指定host文件系统路径,限制了移植性。
docker run -it --rm -v /data1:/data1 -v /data2:/data2:ro -v /etc/yum.repos.d/docker.repo:/mnt/docker.repo:ro busybox
02_docker managed volume
- 不需要指定mount源,docker自动为容器创建数据卷目录。
- 默认创建的数据卷目录都在 /var/lib/docker/volumes 中。
- 如果挂载时指向容器内已有的目录,原有数据会被复制到volume中。
- -v <挂载目录>:<容器路径>:<权限>
示例1
-
创建数据卷
docker volume create registry
-
查看数据卷详细信息
docker volume inspect registry
-
创建容器(-v 挂载目录:容器路径)
docker run -d --name registry1 -v registry:/var/lib/registry registry
-
查看容器详细信息
docker inspect registry1
示例2 -
创建数据卷
docker volume create webdata
-
查看数据卷详细信息
docker volume inspect webdata
-
创建容器
docker run -d --name demo -v webdata:/usr/share/nginx/html nginx
-
查看容器详细信息
docker inspect demo
-
修改nginx默认发布页面
cd /var/lib/docker/volumes/webdata/_data/
echo reg.westos.org > index.html
03_bind mount与docker managed volume对比
-
相同点:两者都是 host 文件系统中的某个路径。
-
不同点:
四、数据卷插件简介
- Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。
- Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix
Socket文件,自动发现可用的插件。 - 当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后端找到插件对应的 socket
文件,建立连接并发起相应的API请求,最终结合Daemon自身的处理完成客户端的请求。
五、convoy卷插件
convoy卷插件
支持三种运行方式:devicemapper、NFS、EBS。
01_NFS服务器端配置
服务器:server1:172.25.2.1
客户端:server2:172.25.2.2
- 安装nfs
yum install -y nfs-utils
- 创建挂载目录
mkdir /nfsdata
chmod 777 /nfsdata/
- 编辑nfs配置文件
vim /etc/exports
/nfsdata *(rw,no_root_squash)
- 让新设置的文件生效
exportfs -rv
- 开启nfs服务
systemctl enable --now nfs
- 显示nfs输出目录列表
showmount -e
会显示如下信息:
Export list for server1:
/nfsdata *
- 安装与配置convoy插件
1.解压插件的两个convoy二进制文件convoy和convoy-pdata_tools到/usr/local/bin/下
2.启动插件守护进程
convoy daemon --drivers vfs --driver-opts vfs.path=/nfsdata &(回车)
#重做convoy 需要把/var/lib/rancher/convoy目录下的内容清空
#里面是之前的缓存数据rm -fr /var/lib/rancher/convoy/*)
3.创建文件
mkdir /etc/docker/plugins
echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
02_NFS客户端配置
- 安装nfs
yum install -y nfs-utils
- 显示共享目录
showmount -e 192.168.17.1
Export list for 172.25.2.1:
/nfsdata *
- 创建挂载点并挂载共享目录
mkdir /nfsdata
mount 172.25.2.1:/nfsdata /nfsdata
- 安装与配置convoy插件
1.解压插件的两个convoy二进制文件到/usr/local/bin/下
2.启动插件守护进程
convoy daemon --drivers vfs --driver-opts vfs.path=/nfsdata &(回车)
#重做convoy 需要把/var/lib/rancher/convoy目录下的内容清空
#里面是之前的缓存数据rm -fr /var/lib/rancher/convoy/*)
3.创建文件
mkdir /etc/docker/plugins
echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
03_创建并使用convoy卷
- 在服务器端创建卷
convoy create vol1
创建卷
convoy list
列出卷
convoy inspect vol1
#详细信息
- 在客户端使用卷
convoy list
列出卷
docker run -d --name demo -v vol1:/usr/share/nginx/html --volume-driver convoy nginx
使用卷
echo reg.westos.org > /nfsdata/vol1/index.html
修改nginx默认发布目录
- 删除客户端容器
docker rm -f demo
- 服务端同时运行相同容器,发现数据同步
docker run -d --name demo -v vol1:/usr/share/nginx/html --volume-driver convoy nginx
以上是关于DockerDocker数据卷模式(bind mount与docker managed volume)数据卷插件convoy之NDF部署使用的主要内容,如果未能解决你的问题,请参考以下文章