• 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

  • 相关阅读:
    使用一段时候,oracle服务在启动时报1053:服务没有及时响应启动或控制请求
    C++,基础函数、string、引用型变量reference
    Springboot整合mybatis多数据源
    深入理解正向代理和反向代理
    【思科交换机命令大全,含巡检命令,网工建议收藏!】
    【华为OD机试真题 python】解密犯罪时间 【2022 Q4 | 100分】
    数据结构-ArrayList解析和实现代码
    Docker 实用操作文档
    C++智能指针
    【MySQL学习笔记】(八)复合查询
  • 原文地址:https://blog.csdn.net/NancyLCL/article/details/128013259