zoukankan      html  css  js  c++  java
  • Docker持久化存储与数据共享

    一.Docker持久化数据的方案

        基于本地文件系统的Volume:可以在执行docker create或docker run时,通过-v参数将主机的目录作为容器的数据卷。这部分功能便是基于本地文件系统的volume管理。
        基于plugin的Volume:支持第三方的存储方案,比如NAS,aws

    1.Volume的类型

        受管理的data Volume,由docker后台自动创建
        绑定挂载的Volume,具体挂载位置可以由用户指定

    二.数据持久化:Data Volume
    1.操作流程

        注意:mysql的Dockerfile中由VOLUME ["/var/lib/mysql"]指定了持久化的路径,此路径是要被持久化的路径,默认volume的名称为local
        执行 sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql启用一个mysql的image容器,其中-v后跟的mysql表示volume别名,冒号后面的路径为volume本地存储的地址
        查看 sudo docker volume ls查看docker的volume,会发现自动生成了一个volume
        通过 sudo docker volume inspect volume的NAME值查看对应volume的详情信息
        如果希望删除volume,则可以使用sudo docker volume rm volumeNAME
    在这里向大家推荐一个资料分享群:894951460,里面有大数据离线处理、数据实时处理、Hadoop 、Spark、推荐系统算法等内容的资料分享,如果有兴趣的朋友可以加入领取。
    2.恢复volume数据

        上述操作后会将数据存储到/var/lib/mysql中,我们可以对container中的mysql数据进行增删改查操作
        通过 sudo docker rm mysql1移除container
        此时查看/var/lib/mysql路径仍然存储volume
        我们可以使用 sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql再次开启一个container,此时的volume会延用之前的数据实现数据的恢复

    三.数据持久化:Bind Mounting
    1.与Data Volume的区别

        Data Volume需要在Dockerfile中定义要创建的volume
        Bind Mounting是在运行时指定本地目录与容器中目录的一一对应关系即可docker run -v /home/aaa:/root/aaa

  • 相关阅读:
    Bone Collector HDU
    Super Jumping! Jumping! Jumping! HDU
    147. 对链表进行插入排序
    C++ Program to Implement Sorted Circularly Doubly Linked List
    344. 反转字符串
    1360. 日期之间隔几天
    剑指 Offer 62. 圆圈中最后剩下的数字
    1441. 用栈操作构建数组
    594. 最长和谐子序列
    836. 矩形重叠
  • 原文地址:https://www.cnblogs.com/ourtest/p/10234739.html
Copyright © 2011-2022 走看看