• docker 数据管理


    一、docker存储资源类型

    用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理

    (1)Data Volume (数据卷)

    (2)Data Volume Dontainers --- 数据卷容器

    二、Data Volume ---数据卷

    Data Volume 本质上是 Docker Host 文件系统中的目录或文件,使用类似与 Linux 下对目录或者文件进行 mount 操作。数据卷可以在容器之间共享和重用,对数据卷的更改会立马生效,对数据卷的更新不会影响镜像,卷会一直存在,直到没有容器使用

    Data Volume 有以下特点:

    a)Data Volume 是目录或文件,而非没有格式化的磁盘(块设备)。

    b)容器可以读写 volume 中的数据。

    c)volume 数据可以被永久的保存,即使使用它的容器已经销毁。

    Data Volume的使用:

    通过-v 参数格式为 <host path>:<container path>

    (1)运行一个容器,并创建一个数据卷挂载到容器的目录上

    [root@localhost ~]# docker run -itd -v /web mariadb:latest /bin/bash

    clip_image001

    进入新创建的容器中

    [root@localhost ~]# docker exec -it 5ab9c9ceb08cc74a28382691c8d37cf71eae1320e2bf54ab663507409aeb6a8d /bin/bash

    clip_image002

    clip_image003

    可以看到创建的数据卷/web,此时里面为空

    [root@localhost ~]# mkdir /test

    [root@localhost ~]# cd /test/

    [root@localhost test]# ls

    [root@localhost test]# echo "test"> hello

    [root@localhost test]# ls

    hello

    (2)将/web映射到宿主机的/test目录上,在容器里,不能直接映射硬盘,必须先将硬盘格式化,挂载到目录上,然后将该目录映射到共享数据卷的方法来实现

    [root@localhost test]# docker run -itd -v /test:/web mariadb:latest /bin/bash

    71f433584b1345d96b8b2699f58d2f1d8e0d7be2ef024551420085ca851b910f

    [root@localhost ~]# docker exec -it

    71f433584b1345d96b8b2699f58d2f1d8e0d7be2ef024551420085ca851b910f /bin/bash

    clip_image004

    在该容器里创建测试文件

    clip_image005

    退出该容器

    clip_image006

    发现在容器做的操作保存到了/test上

    将该容器删除毁灭后,/test中的内容不变。

    三、DataVolumeDontainers --- 数据卷容器

    如果用户需要在容器之间共享一些持续更新的数据,最简单的方法就是使用数据卷容器,其实数据卷容器就是一个普通的容器,只不过是专门用它提供数据卷供其他容器挂载使用

    Data Volume Dontainers使用:

    a)创建一个名为 dbdata 的数据卷,并在其中创建一个数据卷挂载到 /dbdata

    [root@localhost /]# docker run -dti -v /test:/dbdate --name dbser centos:latest /bin/bash

    46baf4b8377674f024991eab7cd5c9410bf0c30a8fea874e1fe409756a98378d

    参数为给容器指定名字为dbser方便记忆

    进入创建好容器里

    [root@localhost /]# docker exec -it 46baf4b8377674f024991eab7cd5c9410bf0c30a8fea874e1fe409756a98378d /bin/bash

    clip_image007

    b)其他容器使用--volume-from 去挂载dbdata容器中的/dbdata数据卷

    [root@localhost ~]# docker run -itd --volumes-from dbser --name db1 centos:latest /bin/bash

    465b7f7bbf5d42988d70ea4936fcd8f2050f47dfac791ff73bea578688fe08f4

    [root@localhost ~]# docker run -itd --volumes-from dbser --name db2 centos:latest /bin/bash

    ce92d47a023ca09a8a3176893b7a403f405c095d83ba5ffcc7ab73e11a8f8cdd

    [root@localhost ~]# docker ps -a

    clip_image008

    进入db1容器内

    [root@localhost ~]# docker exec -it 465b7f7bbf5d42988d70ea4936fcd8f2050f47dfac791ff73bea578688fe08f4 /bin/bash

    clip_image009

    进入db2容器内

    [root@localhost ~]# docker exec -it ce92d47a023ca09a8a3176893b7a403f405c095d83ba5ffcc7ab73e11a8f8cdd /bin/bash

    clip_image010

    在db2容器内写入新内容

    clip_image011

    进入db1容器内查看,发现在db2中写的内容也能在db1中看到

    此时,容器 db1 和 db2 同时挂载了同一个数据卷到本地相同 /dbdata目录。三个容器任何一个目录下的写入,都可以时时同步到另外两个

    clip_image012

  • 相关阅读:
    ASP.NET Web API 2 之文件下载
    Windows 查看某个端口号是否被占用
    C# 数据类型之 String(字符串)
    数据表对应关系(一对一、一对多、多对多)
    嫁给程序员的好处,你get到了吗?
    ASP.NET Web API 2 之 HttpRequestMessage 对象
    C# 使用 log4net 记录日志
    Chrome 浏览器快捷键
    C# 获取程序运行时路径
    SpringBoot整合Pagehelper分页插件
  • 原文地址:https://www.cnblogs.com/liangzb310/p/11179732.html
Copyright © 2020-2023  润新知