美文网首页
docker 数据卷

docker 数据卷

作者: 爱吃豆包 | 来源:发表于2019-07-30 17:18 被阅读0次

    数据卷:是一个可供容器使用的特殊目录.

    容器管理数据有两个方式:
    1.数据卷:容器内数据直接映射到本地环境
    2.数据券容器: 使用特定容器维护数据券

    一、数据卷

    特点:
    1.数据卷可以在容器之间共享和重用,容器间传递数据将变得高效和方便
    2.对数据券内数据的修改会立马生效,无论是容器内操作还是本地操作
    3.对数据卷的更新不会影响镜像,解耦开应用和数据
    4.卷会一直存在,知道没有容器使用,可以安全地卸载

    创建数据卷(Docker中的volume命令)

    // 创建一个名为 test 的数据卷
    docker volume create  test
    

    会创建在 /var/lib/docker/volumes 路径下

    列出已有的数据卷

    docker volume ls
    

    删除数据卷

    // 删除test数据卷
    docker volume rm test
    

    查看数据卷详情

    docker volume inspect test
    

    绑定数据卷

    容器可以绑定创建的数据卷

    docker run 命令的时候,可以使用 -mount 选项来使用数据卷
    -mount 选项支持三种数据卷:

    volume:普通数据卷,映射到主机 /var/lib/docker/volumes 路径下
    bind:绑定数据卷,映射到主机指定路径下
    tmpfs:临时数据卷,只存在与内存中

    例子:
    创建容器一个容器的时候,并指定一个数据卷 /webapp 挂载到容器中的 /opt/webapp

    docker run -d --name centos --mount type=bind,source=/webapp,destination=/opt/webapp centos:7
    

    source 指的是数据卷
    destination 挂载到容器里面的某个位置

    也可以使用 -v 参数,和上面效果一样

    docker run -d --name centos -v /webapp:/opt/webapp centos:7
    

    还可以指定 挂载的数据卷的权限为 ro 只读,默认为 rw 读写

    docker run -d --name centos -v /webapp:/opt/webapp:ro centos:7
    

    二、数据卷容器

    数据卷容器可以多个容器共享一些持续更新的数据。
    数据卷容器也是一个容器。

    创建一个数据卷容器 vol_data ,并在其中创建一个数据卷挂载到 /vol_data

    // 创建一个数据卷容器 vol_data ,使用镜像 centos
    docker run it -v /vol_data --name vol_data centos:7
    

    然后其他容器中使用 --volumes-from 来挂载 vol_data 容器中的数据卷
    比如创建 db1db2 两个容器,并从 vol_data 容器挂载数据卷

    docker run -it --volumes-from vol_data --name db1 centos:7
    
    docker run -it --volumes-from vol_data --name db2 centos:7
    

    然后在 vol_data 容器中的 vol_data 路径下创建的数据,在其他的 db1 和 db2 容器中都可以看到

    注意:
    如果删除了挂载的容器。数据卷不会被自动删除,如果需要删除,必须在最后一个还挂载的容器时显示使用 docker rm -v 命令来指定同时删除管理的容器!

    三、利用数据卷容器来迁移数据

    1.备份

    备份 vol_data 数据卷容器内的数据卷

    docker run --volumes-from vol_data -v ${pwd}:/backup --name worker centos tar cvf /backup/backup.tar /vol_dada
    

    解析:
    表示利用centos镜像创建一个worker容器。使用 --volumes-from vol_data 参数来让worker容器挂载到 vol_data 容器的数据卷(也就是 vol_data 容器中的 vol_data 文件夹)。
    使用 -v ${pwd}:/backup 参数来把本地主机的目录挂载到worker容器中的 /backup 目录。
    在worker容器启动后,使用 tar cvf /backup/backup.tar /vol_data 命令将 /vol_data 路径下的文件备份到 worker 容器中的 /backup/backup.tar , 那么本地主机的当前目录就会有一个 backup.tar 的压缩文件

    2.恢复

    恢复备份的数据卷到一个容器中
    先创建一个带有数据卷的容器

    // 创建一个数据卷容器 vol_data2 
    docker run -v /vol_data --name vol_data2 centos:7
    

    然后创建一个新的容器,挂载到 vol_data2 的容器,并使用 untar 解压备份文件到所挂载的容器中

    docker run --volumes-from vol_data2 -v ${pwd}:/backup busybox tar xvf /backup/backup.tar
    

    busybox 是一个Linux工具包(可以忽略),只需要保证把 backup.tar 解压出来!

    相关文章

      网友评论

          本文标题:docker 数据卷

          本文链接:https://www.haomeiwen.com/subject/qwaxrctx.html