zoukankan      html  css  js  c++  java
  • docker数据管理(2)

    一、docker存储资源类型

    docker两种存储资源类型

    用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理。
    (1)Data Volume (数据卷)
    (2)Data Volume Dontainers --- 数据卷容器

    二、data volume------数据卷

      Data Volume 本质上是 Docker Host 文件系统中的目录或文件,使用类似与 Linux 下对目录或者文件进行 mount 操作。数据卷可以在容器之间共享
    和重用,对数据卷的更改会立马生效,对数据卷的更新不会影响镜像,卷会一直存在,直到没有容器使用。
      Data Volume的特点:
        1° Data Volume 是目录或文件,而非没有格式化的磁盘(块设备)

        2° 容器可以读写 volume 中的数据

        3° volume 数据可以被永久的保存,即使使用它的容器已经销毁。

      Data Volume的使用

        1° 运行一个容器,并创建一个数据卷挂载到容器的目录上

    利用 centos:7.0 的镜像运行一个容器,并在容器内创建一个数据卷挂载到容器的 /web 目录上
    [root@localhost ~]# docker run -dti -v /web centos:latest /bin/bash
    d4e002045c2bd022a826dbd2805b121dd43c41443d86eeb6515f616bf52c8549

        2° 运行一个容器,本地创建/date目录挂载到容器的/var/log/目录上

    [root@localhost ~]# docker run -dti -v /data:/var/log centos:latest /bin/bash
    25773c239584614e301644db01b7275377887c9bbefe8c54cf5cd6be2917ab54

    三、DataVolumeDontainers --- 数据卷容器

      如果用户需要在容器之间共享一些持续更新的数据,最简单的方法就是使用数据卷容器,其实数据卷容器就是一个普通的容器,只不过是专门用它提供数据卷供其他容器挂载使用。

      DataVolumeDontainers的使用:

        1° 创建一个名为 dbdata 的数据卷,并在其中创建一个数据卷挂载到 /dbdata

    --name 参数为容器指定名字方便记忆
    [root@localhost ~]# docker run -dti -v /dbdata --name dbser centos:latest 82b264b29e56700afebaa7acec8c69309964f27dafd271454048b8b7a113720e

        2.其他容器使用--volume-from 去挂载dbdata容器中的/dbdata数据卷

    创建db1和db2两个容器,并挂载/dbdata数据卷到本地
    [root@localhost ~]# docker run -dti --volumes-from dbser --name db1 centos:latest 893450737adee5a2673feef72bf3239ff7b1b3cf1d284de098da405e8fe86e64 [root@localhost ~]# docker run -dti --volumes-from dbser --name db2 centos:latest aff1e64343bf339b32c81c7b1ed3baef84a724b35faa160ea0a9d3a54ae65577

    此时,容器 db1 和 db2 同时挂载了同一个数据卷到本地相同 /dbdata目录。三个容器任何一个目录下的写入,都可以时时同步到另外两个。

    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                    NAMES
    aff1e64343bf        centos:latest       "/bin/bash"              4 minutes ago       Up 4 minutes                                        db2
    893450737ade        centos:latest       "/bin/bash"              4 minutes ago       Up 4 minutes                                        db1
    82b264b29e56        centos:latest       "/bin/bash"              6 minutes ago       Up 6 minutes                                        dbser
    
    在db2中创建jam文件,写入0330
    [root@localhost ~]# docker exec -it  aff1e64343bf /bin/bash
    [root@aff1e64343bf dbdata]# echo "0330" >jam
    [root@aff1e64343bf dbdata]# cat jam 
    0330
    
    在db1中查看是否存在jam文件
    [root@localhost ~]# docker exec -it 893450737ade /bin/bash
    [root@893450737ade /]# cd dbdata/
    [root@893450737ade dbdata]# ls
    jam
    [root@893450737ade dbdata]# cat jam
    0330
    
    在dbser中查看jam文件是否存在
    [root@localhost ~]# docker exec -it 82b264b29e56 /bin/bash
    [root@82b264b29e56 /]# ls
      dbdata  
    [root@82b264b29e56 /]# cd dbdata/
    [root@82b264b29e56 dbdata]# ls
    jam
    [root@82b264b29e56 dbdata]# cat jam
    0330
  • 相关阅读:
    leetcode 175 Combine Two Tables join用法
    spark学习及环境配置
    html表格设计
    免费的论文查重网站
    php利用msqli访问数据库并实现分页,
    php利用href进行页面传值的正确姿势
    php+mysql时报错:Unknown column '' in 'field list'解决方案
    使用XMLHttpRequest解析json
    用自定义的函数将gps转换为高德坐标
    WeakHashMap回收时机
  • 原文地址:https://www.cnblogs.com/daisyyang/p/11046948.html
Copyright © 2011-2022 走看看