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分层文件系统特点:?(1)性能差; (2)生命周期与容器相同

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

docker提供了两种卷:(1)bind mount; (2)docker managed volume

1、Docker数据卷管理

bind mount :

默认权限是读写rw,可以在挂载时指定只读ro。 -v选项指定的路径,如果不存在,挂载时会自动创建。创建后宿主机文件会自动覆盖容器的文件。

docker run --rm -it -v  /data1/:/data1 busybox

docker run --rm -it -v  /data1/:/data1 -v /data2:/data2:ro -v /etc/yum.repos.d/dvd.repo:/dvd.repo:ro busybox

docker managed volume:

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

docker managed volume 不需要指定mount源,docker自动为容器创建数据卷目录。

默认创建的数据卷目录都在 /var/lib/docker/volumes 中。

如果挂载时指向容器内已有的目录,原有数据会被复制到volume中。不会覆盖原有文件。

[root@server1 _data]# docker volume create vol1
vol1
[root@server1 _data]# docker volume inspect vol1 
[
    {
        "CreatedAt": "2022-02-20T13:59:52+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/vol1/_data",
        "Name": "vol1",
        "Options": {},
        "Scope": "local"
    }
]


[root@server1 _data]# docker run -d --name demo -v vol1:/var/lib/registry registry
e833d4a02914ffd34c9f70797c6ff96749a53fe929bcf3f289aab5f761fbf5c7
[root@server1 _data]# docker inspect demo
        "Mounts": [
            {
                "Type": "volume",
                "Name": "vol1",
                "Source": "/var/lib/docker/volumes/vol1/_data",
                "Destination": "/var/lib/registry",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }

bind mount与docker managed volume对比:

相同点:两者都是 host 文件系统中的某个路径。

不同点:

注意:实际操作时发现:

使用volume方式时,若宿主机</var/lib/docker/volumes/vol1/_data>有文件,则容器内会显示宿主机的文件;若该路径下没有文件,则会显示容器内的文件。

使用bind mount时,无论宿主机映射的路经下有没有文件,容器内始终与宿主机的文件相同。

2、跨节点容器数据同步——卷插件简介

实际生产环境中,如果某台宿主机的docker容器挂掉了,可以调度到其他主机继续提供服务;但是原宿主机的数据却无法同步。所以接下来要解决跨主机的数据同步问题。

(1)卷插件官网文档

docker 卷默认使用的是local类型的驱动,只能存在宿主机,跨主机的volume就需要使用第三方的驱动,可以查看以下链接:

Use Docker Engine plugins | Docker Documentationhttps://docs.docker.com/engine/extend/legacy_plugins/#volume-pluginsdocker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。 Docker volume plugins | Docker DocumentationHow to manage data with external volume pluginshttps://docs.docker.com/engine/extend/plugins_volume/#volume-plugin-protocol(2)卷插件简介

Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。

Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix Socket文件,自动发现可用的插件。

当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最终结合Daemon自身的处理完成客户端的请求。

3、convoy卷插件实践

docker clirnt --> docker daemon --> convoy plugins --> nfs

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:05:43 
 
开发: 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年11日历 -2024/11/16 3:23:57-

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