码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 八、Docker容器的数据管理


    目录

    • 一、Docker 数据卷
    • 1.定义
    • 2.为容器添加数据卷
      • 1).前言
      • 2).示列
        • (1).执行命令添加数据卷
        • (2).在docker容器中创建文件并写入字体
        • (3).测试文件的同步
        • (4).通过命令查看容器是否挂载了数据卷
    • 3.为容器数据卷添加访问权限
      • 1). 运行容器
      • 2). 在容器中创建文件
      • 3). 通过命令查看容器挂载了数据卷元数据
    • 4.使用Dockerfile 构建包含数据卷的镜像
    • 二、Docker 数据卷容器
      • 1.定义
      • 2.挂着数据卷容器的方法
        • 1).语法
        • 2).示列
          • (1).创建一个命名的数据卷容器 dbdata1:
          • (2).然后,在其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷。
    • 三、docker 备份、恢复、迁移数据卷
    • 1.前言语法
    • 2.备份
    • 3.恢复
      • 1.首先创建一个带有数据卷的容器 dbdata2。
      • 2.然后创建另一个容器,挂载 dbdata2 的容器,并使用 untar 解压备份文件到挂载的容器卷中。
      • 3. 验证

    一、Docker 数据卷

    1.定义

    数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

    • 数据卷可以在容器之间共享和重用,本地与容器间传递数据更高效
    • 对数据卷的修改会立马生效,在容器内部与本地目录均可对数据卷进行修改
    • 对数据卷的更新,不会影响镜像,对数据与应用进行了解耦操作
    • 卷会一直存在,直到没有容器使用(即使挂载数据卷的容器已经删除)

    *数据卷的使用,类似于 Linux 下对目录或文件进行 mount。

    卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器应用的数据卷进行处理。
    当容器目录和数据卷目录绑定后,对方的修改会立即同步,一个数据卷可以被多个容器同时挂载,一个容器也可以被挂载多个数据卷。

    在这里插入图片描述

    2.为容器添加数据卷

    1).前言

    在用 docker run 命令的时候,使用 -v 标记来创建一个数据卷并挂载到容器里。在一次 run 中多次使用可以挂载多个数据卷。

    docker run -it -v 主机目录:容器内目录
    
    • 1

    2).示列

    (1).执行命令添加数据卷

    docker run -it -v  /apps/data:/data mycentos:1.0 /bin/bash
    
    • 1

    备注: 如果宿主机和容器中不存在 指定目录 执行命令会自动创建
    在这里插入图片描述

    (2).在docker容器中创建文件并写入字体

    touch /data/test
    echo "I'm in container" > /data/test
    #退出容器
    exit
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    (3).测试文件的同步

    cat /apps/data/test
    
    • 1

    在这里插入图片描述

    (4).通过命令查看容器是否挂载了数据卷

    在这里插入图片描述
    在这里插入图片描述

    3.为容器数据卷添加访问权限

    1). 运行容器

     docker run -it  --name dvt1 -v  /apps/data:/data:ro mycentos:1.0 /bin/bash
    
    • 1

    备注 ro是只读
    在这里插入图片描述

    2). 在容器中创建文件

    cd /data
    touch /data/test1
    exit
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3). 通过命令查看容器挂载了数据卷元数据

    docker inspect dvt1
    
    • 1

    在这里插入图片描述

    4.使用Dockerfile 构建包含数据卷的镜像

    # 创建一个dockerfile文件,名字可以随机,建议Dockerfile 
    
    # 文件的内容 
    
    FROM centos   --基础镜像
    
    VOLUME ["volume1","volume2"]
    
    CMD echo "-----------end-----------"
    
    CMD /bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    通过VOLUME与docker run创建数据卷命令不同
    通过Dockerfile 创建是不能够映射到本地已经存在的目录中的
    通过docker run 创建是会创建我们指定名字的映射

    二、Docker 数据卷容器

    1.定义

    • 命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器!
    • 用户需要在多个容器之间共享一些持续更新的数据,最简单方法就是使用数据卷容器
    • 数据卷容器也是一个容器,但它的目的是专门提供数据卷给其他容器挂载
      在这里插入图片描述

    2.挂着数据卷容器的方法

    1).语法

    docker run -d --volumes-from  [CONTAINER NAME]
    
    • 1

    2).示列

    (1).创建一个命名的数据卷容器 dbdata1:

    docker run -d -v /dbdata --name dbdata centos:7 /bin/bash
    docker inspect dbdata
    
    • 1
    • 2

    (2).然后,在其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷。

      docker run -d --volumes-from dbdata --name db1 centos:7
       docker run -d --volumes-from dbdata --name db2 centos:7
    
    • 1
    • 2

    还可以使用多个 --volumes-from 参数来从多个容器挂载多个数据卷。 也可以从其他已经挂载了数据卷的容器来挂载数据卷。

    docker run -d --name db3 --volumes-from db1 centos:7
    
    • 1

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

    如果删除了挂载的容器(包括 dbdata、db1 和 db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。 这可以让用户在容器之间升级和移动数据卷。具体的操作将在下一节中进行讲解。

    三、docker 备份、恢复、迁移数据卷

    1.前言语法

    可以利用数据卷对其中的数据进行进行备份、恢复和迁移。

    docker run --volumes-from [container name] -v $(pwd):/backup centos:7 tar cvf /backup/backup.tar [container  data volume]
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    2.备份

    首先使用 --volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从本地主机挂载当前到容器的 /backup 目录。命令如下:

    docker run --volumes-from dbdata -v $(pwd):/backup  centos:7  tar cvf /backup/backup.tar /dbdata
    
    • 1

    在这里插入图片描述
    容器启动后,使用了 tar 命令来将 dbdata 卷备份为本地的 /backup/backup.tar
    pwd 是指执行命令的目录

    3.恢复

    1.首先创建一个带有数据卷的容器 dbdata2。

    如果要恢复数据到一个容器,首先创建一个带有数据卷的容器 dbdata2。

      docker run -v /dbdata --name dbdata2 centos:7  /bin/bash
    
    • 1

    在这里插入图片描述

    2.然后创建另一个容器,挂载 dbdata2 的容器,并使用 untar 解压备份文件到挂载的容器卷中。

    docker run --volumes-from dbdata2 -v $(pwd):/backup centos:7 tar xvf  /backup/backup.tar
    
    • 1

    在这里插入图片描述

    3. 验证

    docker ps -a 
    docker inspect 容器名称
    cd 进入容器自动生成的挂着目录
    查看文件是否存在
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    【XSS绕过-防护策略】理解防护策略,更好的绕过
    将时间序列转成图像——马尔可夫转移场方法 Matlab实现
    C++:栈与队列,优先级队列
    全网最详细解读《GIN-HOW POWERFUL ARE GRAPH NEURAL NETWORKS》!!!
    【c语言基础题】— —第六版,可当作日常练习和期末复习,有奇效哟!
    【echarts】09、echarts+vue2 - 柱状图
    SAP 自开发记录用户登录日志等信息
    使用Chrome 开发者工具提取对应的字符串
    Java面向对象三大特性:继承、封装、多态
    FPGA实现精简版UDP通信,占资源很少但很稳定,提供2套工程源码
  • 原文地址:https://blog.csdn.net/q908544703/article/details/126236323
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号