栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

企业运维实战--Docker学习笔记3 Docker数据卷管理、convoy卷插件的使用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

企业运维实战--Docker学习笔记3 Docker数据卷管理、convoy卷插件的使用

0.Docker数据卷

为什么要用数据卷
docker分层文件系统 性能差
生命周期与容器相同

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

docker提供了两种卷:

bind mount
docker managed volume

对比:
相同:

两者都是host文件系统中的某个路径

不同:

1.Docker数据卷管理 1.1bind mount

将主机上的文件/目录挂载到容器里面

使用 -v 选项指定路径
docker run -it --rm -v /opt/data1:/data1 busyboxplus
cd data1
touch 1

可以发现宿主机的opt/data1目录也有1
docker run -it --rm -v /opt/data1:/data1:ro busyboxplus
若在指定目录后面加ro 则之可以可读

docker run -d --name demo1 -v /opt/data2::/usr/share/nginx/html nginx
crul 172.17.0.2
是因为不会将原有数据复制到目录里

我们需要自己创建

[root@server5 _data]# cd /opt/data2/
[root@server5 data2]# touch index.html
[root@server5 data2]# echo web2 > index.html 
[root@server5 data2]# curl 172.17.0.2
web2
1.2.docker managed volume

bind mount必须指定host文件系统路径,限制了移植性 docker managed volume
不需要指定mount源,docker自动为容器创建数据卷目录 默认创建的数据卷目录都在 /var/lib/docker/volumes 中 (可以通过 docker volume inspect webdata1 来查看)

删掉刚才创造的容器

docker rm -f demo1 

创建webdata1卷来做实验

docker volume create webdata1
docker run -d --name demo -v webdata1:/usr/share/nginx/html nginx

可以看到创建的卷会自动生成在 /var/lib/docker/volumes 目录下

测试:

curl 172.17.0.2

2.卷插件简介

docker 卷默认使用的是local类型的驱动,只能存在宿主机,跨主机的volume就需要使用第三方的驱动 Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix Socket文件,自动发现可用的插件。当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最终结合Daemon自身的处理完成客户端的请求。

3.convoy卷插件

convoy卷插件实现 支持三种运行方式:devicemapper、NFS、EBS。
本次实验使用nfs方式并且需要两台虚拟机server4 和5

server5:
删除刚才创建的webdata

docker volume rm webdata1

安装并准备挂载目录

yum install nfs-utils -y
mkdir /mnt/nfs
vim /etc/exports
mnt/nfs        *(rw,no_root_squash)
chmod 777 /mnt/nfs
 systemctl start nfs
showmount -e

server4也同样需要安装nfs-utils

3.1convoy卷插件安装

server4和server5都需要部署convoy插件
server5:

tar zxf convoy-v0.5.2.tar.gz
cd convoy/
mv convoy* /usr/local/bin/    #将convey的二进制文件移动到/usr/local/bin下便于直接调用
mkdir -p /etc/docker/plugins/            ##此目录下村存放sock的路径
echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec        ## 指定sock的路径,使得docke调用的时候可以检索到
convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &             ## 启动插件 打入后台

ps ax 插件已开启

当启动插件之后,我们可以在/var/run/convoy/下看到socket 为docker引擎指定convoy的sock的文件到/etc/docker/plugins/convoy.spec

server4做同样启动插件的所有步骤

3.2.创建卷

server5:

docker volume create -d convoy vol1
docker volume ls   #查看数据卷

数据都在/mnt/nfs中

3.3.使用卷

可以在两个主机上同时运行容器,会发现数据目录中的数据是同步的。
server5:

docker run -d --name web1 -v vol1:/usr/share/nginx/html nginx
curl 172.17.0.2


当我们做故障迁移
将server5上的web镜像删除掉

cd vol1/
echo web1 > index.html 
docker rm -f web1                ##做故障迁移

将server5的nginx传给4

docker save -o nginx.tar nginx:latest
scp nginx.tar server4:

server4:
docker load -i nginx.tar
docker run -d --name web1 -v vol1:/usr/share/nginx/html nginx
curl 172.17.0.2

删除步骤:
kill掉进程,删除套接字指向文件,删除元数据,重启docker。
如果不重启,后续docker命令会很慢。

按要求删除进程和套接字文件

kill 4680
rm -f /etc/docker/plugins/convoy.spec
convoy delete vol1

删除元数据,重启服务
cd /var/lib/docker/volumes/
rm metadata.db
systemctl restart docker


rpm -qf 可以查看某个文件输入哪个rpm包

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291771.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号