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卷默认使用的是local类型的驱动,只能存在宿主机,跨主机的volume就需要使用第三方的驱动

  • docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。

  • 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部署使用的主要内容,如果未能解决你的问题,请参考以下文章

[云原生之DockerDocker容器的存储与迁移

docker数据卷之持久化操作

Docker容器简介及命令

Docker-数据管理

13-Docker 技术基本应用实践

Docker数据卷之进阶篇