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
  • 相关阅读:
    Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
    DHCP "No subnet declaration for xxx (no IPv4 addresses)" 报错
    Centos安装前端开发常用软件
    kubernetes学习笔记之十:RBAC(二)
    k8s学习笔记之StorageClass+NFS
    k8s学习笔记之ConfigMap和Secret
    k8s笔记之chartmuseum搭建
    K8S集群集成harbor(1.9.3)服务并配置HTTPS
    Docker镜像仓库Harbor1.7.0搭建及配置
    Nginx自建SSL证书部署HTTPS网站
  • 原文地址:https://www.cnblogs.com/daisyyang/p/11046948.html
Copyright © 2011-2022 走看看