IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker(五)数据卷管理 -> 正文阅读

[系统运维]docker(五)数据卷管理

一、docker数据卷介绍

一、为什么使用docker数据卷

docker自带的分层文件系统:
  性能差、生命周期与容器相同。

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

因此在docker文件使用docker数据卷更为方便

二、docker数据卷的类型

类型一、bind mount

是将主机上的目录或文件mount到容器里。使用直观高效,易于理解。
使用 -v 选项指定路径。注意
1.格式 -v  <host path>:<container path>
2. bind mount 默认权限是读写rw,可以在挂载时指定只读ro,
举例: docker run -it --name vm1 \ /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash

类型二、docker managed volume

1.bind mount必须指定host文件系统路径,限制了移植性。
2.docker managed volume 不需要指定mount源,docker自动为容器创建数据卷目录。
3.默认创建的数据卷目录都在 `/var/lib/docker/volumes` 中。如果挂载时指向容器内已有的目录,原有数据会被复制到volume中。
举例:docker run -d --name web1 -p 80:80 -v /usr/share/nginx/html nginx

两者的区别
在这里插入图片描述

二、数据卷的使用

一、bind mount

将主机的/data的目录挂载到容器里中,真机里面写index.html文件

docker run -d --name demo -v  /data:/usr/share/nginx/html nginx
echo www.westos.org > /data/index.html
crul 172.17.0.2

访问容器地址时发现能看到写的地址,说明/data文件成为容器内的/usr/share/nginx/html文件
在这里插入图片描述
对比容器地址和真机里挂载点发现文件一致
在这里插入图片描述
在这里插入图片描述
清理刚才的容器进程,目录,卷

docker rm -f demo
rm -f index.html
docker volume prune
docker volume ls

二、docker managed volume

docker managed volume 不需要指定mount源,docker自动为容器创建数据卷目录,那个路径名字会比较长。
默认创建的数据卷目录都在 /var/lib/docker/volumes 中。
docker创建一个卷,并将其挂载到容器/usr/share/nginx/html里

创建一个docker券

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

我们可以看到创建的卷会自动生成在 /var/lib/docker/volumes/webdata目录下
在这里插入图片描述

三、卷插件

一、简介

docker 卷默认使用的是local类型的驱动,只能存在宿主机,跨主机的volume就需要使用第三方的驱动。convoy卷插件实现支持三种运行方式:devicemapper、NFS、EBS。本实验采用nfs方式进行实验
在这里插入图片描述

二、安装卷插件

https://github.com/rancher/convoy/releases/download/v0.5.0/
获取到convoy.tar.gz

1.安装nfs

[root@server1 ~] yum install nfs-utils.x86_64 -y
[root@server1 ~] mkdir /mnt/nfs
[root@server1 ~] vim /etc/exports


///
nfsdata        *(rw,no_root_squash)
///


[root@server1 ~] chmod 777 /mnt/nfs
[root@server1 ~] systemctl start nfs
[root@server1 ~] showmount -e     图1

图1
在这里插入图片描述
server2

[root@server2 ~] yum install nfs-utils.x86_64 -y 
[root@server2 ~] mkdir /mnt/nfs/ 
[root@server2 ~] mount 172.25.0.1:/mnt/nfs /mnt/nfs/ 
[root@server2 ~] df

在这里插入图片描述
2.convoy卷插件安装
server1和server2都需要不部署convoy插件

[root@server1 ~]# tar zxf convoy.tar.gz 
[root@server1 ~]# cd convoy/ 
[root@server1 convoy]# mv convoy* /usr/local/bin/ 
[root@server1 convoy]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &             ## 启动插件
 [root@server1 convoy]# mkdir -p /etc/docker/plugins/            ##此目录下村存放sock的路径 
 [root@server1 convoy]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec        ## 指定sock的路径,使得docke调用的时候可以检索到 cat convoy.spec 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当启动插件之后,我们可以在/var/run/convoy/下看到数据
在这里插入图片描述
3.创建卷:

[root@server1 ~]# convoy create vol1
[root@server1 ~]# convoy list

在这里插入图片描述
server2
操作同server1

[root@server2 ~]# tar zxf convoy.tar.gz 
[root@server2 ~]# cd convoy/ 
[root@server2 convoy]# mv convoy* /usr/local/bin/ 
[root@server2 convoy]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &             ## 启动插件 
[root@server2 convoy]# mkdir -p /etc/docker/plugins/            [root@server2 convoy]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec       
[root@server2 convoy]#docker volume ls 

在这里插入图片描述
4.使用卷

[root@server1 ~]# docker run -d --name demo -v vol1:/usr/share/nginx/html nginx
[root@server1 vol1]# curl 172.17.0.2
www.westos.org

做故障迁移,发现仍然能在server2中访问到地址

[root@server1 vol1] docker rm -f demo                做故障迁移 
[root@server2 vol1] docker run -d --name demo -v vol1:/usr/share/nginx/html  nginx                                 server2中开启nginx
[root@server2 vol1] curl 172.17.0.2 
www.westos.org 
[root@server2 vol1] docker volume ls 

5.完成后删除卷

docker delete vol1

但是docker delete vol1这种方式删除卷之后有个问题
docker volume ls的时候会很卡,非常慢但是不会报错!
需要将convoy进程杀死,重启docker 服务。

ps ax    图1
kill ****    
cd /etc/dicker/plugins
rm -f *
cd /var/lib/volumes
rm -f metdata.db
systemctl restart docker

图1
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:38:53  更:2021-07-27 16:39:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 14:07:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码