• Docker数据卷和数据卷容器


    是什么

    数据卷设计的目的,在于数据的永久化,他完全独立于容器的生存周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制对容器引用的数据卷进行处理。类似我们Redis里面的rdb和aof文件

    特点

    • 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中
    • 数据卷可以在容器之间共享重用
    • 可以对数据卷里的内容直接修改
    • 数据卷的变化不会影响镜像的更新
    • 卷会一直存在,即使挂载数据卷的容器已经被删除

    数据卷(容器内添加)

    1、直接命令添加
    docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

    2、DockerFile添加
    在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷

    数据卷容器(容器间传递共享)

    如果用户需要在容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器,数据卷容器其实是一个普通的容器,专门用来提供数据卷供其它容器挂载
    1、创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:
    docker run -ti -v /dbdata --name dbdata ubuntu:14.04
    2、我们可以在其他容器中使用–volumes-form来挂载dbdata容器中的数据卷,例如创建db1和db2两个容器,并从dbdata容器挂载数据卷:
    docker run -ti --volumes-from dbdata --name db1 ubuntu:14.04
    docker run -ti --volumes-from dbdata --name db2 ubuntu:14.04
    3、此时容器db1和db2都挂载同一个数据卷到相同的/dbdata目录。三个容器任何一方在该目录下的写入,其他容器都可以看到

    数据备份

    docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu:14.04 tar cvf /backup/backup.tar /dbdata

    1. 利用ubuntu镜像创建了一个容器worker
    2. 使用–volumes-from dbdata参数来让worker容器挂载dbdata容器的数据卷(即dbdata数据卷)
    3. 使用-v $(pwd):/backup参数来挂载本地的当前目录到worker容器的/backup目录
    4. worker容器启动后,使用了tar cvf /backup/backup.tar /dbdata命令来将/dbdata下内容备份为容器内的/backup/backup.tar,即宿主主机当前目录下的backup.tar

    数据恢复

    如果要恢复数据到一个容器,可以按照下面的操作,首先创建一个带有数据卷的容器dbdata2:
    docker run -v /dbdata --name dbdata2 ubuntu:14.04
    然后创建另一个新的容器,挂载dbdata2的容器,并使用ubtar解压备份文件到所挂载的容器卷中即可:
    docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

  • 相关阅读:
    【云栖社区001-数据结构】如何实现一个高效的单向链表逆序输出(Java版)
    全球疫情爬取及展示
    两个命令配置云服务器web开发环境
    云服务器的两类系统特点整理介绍
    团队介绍和项目简介
    Navicat连接阿里云服务器上MySQL数据库
    Android_bilibili式评论及回复的简单实现
    人月神话阅读笔记02
    每日进度博客_2
    每日进度博客_1
  • 原文地址:https://www.cnblogs.com/ding-dang/p/13522142.html
Copyright © 2020-2023  润新知