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

自动化运维之docker下——docker的数据卷(未完待续)

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

自动化运维之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方式时,若宿主机有文件,则容器内会显示宿主机的文件;若该路径下没有文件,则会显示容器内的文件。

使用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

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

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

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