docker数据卷

  • docker mount
  • docker managed volume
  • 卷插件简介
  • convoy卷插件
  • 删除卷插件、还原



docker数据卷:

  • mount到主机中,绕开分层文件系统
  • 和主机磁盘性能相同,容器删除后依然保留
  • 仅限本地磁盘,不能随容器迁移

docker提供了两种数据卷:

  • bind mount
  • docke managed volume

docker mount

是将主机上的目录或者文件mount到容器里
-v 指定路径
,如果不存在,挂载时会自动创建

docker 容器数据卷共享 docker swarm 数据卷_运维


docker 容器数据卷共享 docker swarm 数据卷_docker 容器数据卷共享_02

bind mount 默认权限是 rw , 可以在mount时指定为 ro

docker 容器数据卷共享 docker swarm 数据卷_数据_03


docker 容器数据卷共享 docker swarm 数据卷_docker 容器数据卷共享_04


docker 容器数据卷共享 docker swarm 数据卷_容器_05


docker 容器数据卷共享 docker swarm 数据卷_运维_06

彻底删除搭建的harbor

docker 容器数据卷共享 docker swarm 数据卷_容器_07

prune的用法:

docker volume prune 删除不用的卷

docker network prune 删除不用的网络

docker container prune 删除关闭的容器容器删除,数据卷还在

docker 容器数据卷共享 docker swarm 数据卷_数据_08

bind mount必须指定host文件系统路径,限制了移植性

docker managed volume

docker managed volume不需要指定mount源,docker自动为容器创建数据卷目录
默认的数据卷目录都在 /var/lib/docker/volumes中
如果挂载时指向容器内已有的目录,原有的数据会被复制到volume中

docker 容器数据卷共享 docker swarm 数据卷_数据_09


docker 容器数据卷共享 docker swarm 数据卷_运维_10

bind mount与docker managed volume的相同点:
两者都是host文件系统中的某个路径
两者都支持单机同步,不能跨主机

为了实现跨主机之间同步,就需要卷插件

bind mount与docker managed volume的不同点:

docker 容器数据卷共享 docker swarm 数据卷_运维_11

卷插件简介

  • 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卷插件安装:

docker 容器数据卷共享 docker swarm 数据卷_容器_12

showmount -e 查看server6上可挂载的文件夹

docker 容器数据卷共享 docker swarm 数据卷_docker 容器数据卷共享_13


docker 容器数据卷共享 docker swarm 数据卷_docker_14


docker 容器数据卷共享 docker swarm 数据卷_docker_15


docker 容器数据卷共享 docker swarm 数据卷_容器_16

docker 容器数据卷共享 docker swarm 数据卷_docker_17


docker 容器数据卷共享 docker swarm 数据卷_docker_18


docker 容器数据卷共享 docker swarm 数据卷_运维_19


docker 容器数据卷共享 docker swarm 数据卷_数据_20


docker 容器数据卷共享 docker swarm 数据卷_docker_21


docker 容器数据卷共享 docker swarm 数据卷_容器_22


docker 容器数据卷共享 docker swarm 数据卷_数据_23


docker 容器数据卷共享 docker swarm 数据卷_运维_24


docker 容器数据卷共享 docker swarm 数据卷_容器_25


在两个主机上同时运行容器,会发现数据目录中的数据时同步的

docker 容器数据卷共享 docker swarm 数据卷_数据_26


docker 容器数据卷共享 docker swarm 数据卷_数据_27


docker 容器数据卷共享 docker swarm 数据卷_docker_28

删除卷插件、还原

docker 容器数据卷共享 docker swarm 数据卷_运维_29


docker 容器数据卷共享 docker swarm 数据卷_运维_30


docker 容器数据卷共享 docker swarm 数据卷_docker_31


docker 容器数据卷共享 docker swarm 数据卷_docker 容器数据卷共享_32


docker 容器数据卷共享 docker swarm 数据卷_docker_33