• Docker数据管理


    1.  数据卷:Data Volume有以下特点∶

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

            2>.  容器可以读写volume中的数据。

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

    2.  DataVolume的使用:

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

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

    [root@node1 ~]# docker run -itd -v /web busybox /bin/bash

            2>.  运行一个容器,本地创建/test目录,挂载到容器的/web目录上:

    1. [root@node1 ~]# mkdir test
    2. [root@node1 ~]# docker run -itd -v /root/test:/web busybox /bin/bash

    即在容器中的" /web "目录下的数据,保存在了宿主机的" /root/test "目录下。

    3.  数据卷容器(Data Volume Dontainers):

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

    Data Volume Dontainers使用∶

            1>.  创建一个名为dbser的数据卷,并在其中创建一个数据卷挂载到/test下:

    [root@node1 ~]# docker run -it -v /root/test:/dbdata --name dbser busybox

            2>.  其他容器使用" --volumes-from "参数去挂载dbdata数据卷,其他容器中就会有dbser中的/dbdata目录及目录下的数据

    1. [root@node1 ~]# docker run -itd --volumes-from dbser --name db1 busybox
    2. [root@node1 ~]# docker run -itd --volumes-from dbser --name db2 busybox

            3>.  可以多次使用" --volumes-from "参数来从多个容器挂载多个数据卷。还可以从其他已经挂载了的容器来挂载数据卷∶

    1. [root@node1 ~]# docker run -itd --name db4 --volumes-from db1 --volumes-from db2 busybox
    2. [root@node1 ~]# docker run -itd --name db3 --volumes-from db1 busybox

    注意∶使用" --volumes-from "参数所挂载数据卷的容器自身并不需要保持在运行状态。

    如果删除了挂载的容器(包括dbdata、db1和db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用" docker rm -v "命令来指定同时删除关联的容器。

    4.  备份、恢复和迁移数据卷:

            1>.  备份数据卷: 通过参数" --volumes-from "从数据卷挂载数据卷,然后备份数据卷中的数据,例如∶

    1. [root@node1 ~]# cd /root/test
    2. ##创建文件
    3. [root@node1 test]# rouch test{1,3}
    4. ##创建dbdata数据卷
    5. [root@node1 ~]# docker run -v /root/test:/dbdata --name dbdata busybox
    6. ##创建一个容器挂载dbdata数据卷,并备份容器中"/dbdata"下的数据
    7. [root@node1 ~]# docker run --volumes-from dbdata -v $(pwd):/badckup busybox tar cvf /backup/backup.tar /dbdata
    8. 创建一个新的容器,将宿主机本地目录挂载到/backup,然后将数据卷容器dbdata的数据卷
    9. (/dbdata)打包到/backup/backup.tar。然后在宿主机的当前目录下就可以得到backup.tar。

            2>.  恢复数据卷:将备份的数据恢复到原有容器或者其他任何容器。假设我们想把backup.tar的数据恢复到一个新的容器 dbdata2∶

    1. ##创建dbdata2容器:
    2. [root@node1 ~]# docker run -v /dbdata name dbdata2 busybox /bin/bash
    3. ##解压宿主机当前路径下的/backup/backup.tar到dbdata2容器中的/dbdata
    4. [root@node1 ~]# docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

  • 相关阅读:
    云计算-私有云-国产-华为-FusionCloud
    【多线程】Timer任务定时器实现与盲等原子性问题的解决
    基于Redis手工实现分布式锁
    IDEA的DEUG模式技巧和使用
    群晖DS218+部署PostgreSQL(docker)
    数智创新时代,有生态才有未来
    【从零开始学微服务】03.软件架构的演化过程
    elasticsearch(ES)分布式搜索引擎01——(初识ES,索引库操作和文档操作,RestClient操作索引库和文档)
    JAVAWeb1:登录页面
    视频配音软件有哪些?推荐几款好用的视频配音软件
  • 原文地址:https://blog.csdn.net/NancyLCL/article/details/128013259