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

    容器中管理数据主要有两种方式:数据卷 、数据卷容器

    一、数据卷

     1、在容器内创建一个数据卷

    使用-v标记可以在容器内创建一个数据卷,多次使用-v标记可以创建多个数据卷。如下,创建一个数据卷挂载到/webapp目录。

    docker run -d -P --name web -v /webapp training/webapp python app.py

    2、挂载一个主机目录作为数据卷

    docker挂载数据卷的默认权限是读写(rw),用户可以通过,ro指定为只读。

    docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
    docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

    3、挂载一个本地主机文件作为数据卷

    docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

    二、数据卷容器

    如下,首先创建一个数据卷容器dbdata,然后创建db1、db2容器,通过--volumes-from挂载dbdata容器中的数据卷,最后从已挂载数据卷的容器db1来挂载数据卷,创建db3容器。

    [root@CentOS702 ~]# docker run -it -v /dbdata --name dbdata ubuntu
    root@cf751cc3a084:/# ls
    bin  boot  dbdata  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@cf751cc3a084:/# cd /dbdata
    root@cf751cc3a084:/dbdata# touch test
    root@cf751cc3a084:/dbdata# exit
    exit
    [root@CentOS702 ~]# docker run -it --volumes-from dbdata --name db1 ubuntu
    root@08bd914bf754:/# ls /dbdata/
    test
    root@08bd914bf754:/# exit
    exit
    [root@CentOS702 ~]# docker run -it --volumes-from dbdata --name db2 ubuntu
    root@bed7cb507b6b:/# ls /dbdata
    test
    root@bed7cb507b6b:/# exit
    exit
    [root@CentOS702 ~]# docker run -d --name db3 --volumes-from db1 training/postgres
    a328fd987dc0104e433809351e5f702506725cca21c2ab58994059136f9e515d
    [root@CentOS702 ~]# docker exec -ti a328fd /bin/bash
    root@a328fd987dc0:/# ls /dbdata/
    test
    root@a328fd987dc0:/# exit
    exit

    注意:

    1、使用--volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态

    2、如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式的使用docker rm -v命令来指定同时删除关联的容器

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

    1、备份

    [root@CentOS702 ~]# docker run -ti -v /dbdata --name dbdata ubuntu
    root@270cff6eaed1:/# touch /dbdata/test
    root@270cff6eaed1:/# exit
    exit
    [root@CentOS702 ~]# cd /data/
    [root@CentOS702 data]# docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
    tar: Removing leading `/' from member names
    /dbdata/
    /dbdata/test
    [root@CentOS702 data]# tar tf backup.tar 
    dbdata/
    dbdata/test

    2、恢复

    [root@CentOS702 data]# docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
    [root@CentOS702 data]# docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
    dbdata/
    dbdata/test
  • 相关阅读:
    Title
    2019 年 Java 最新面试指南共 80 题,赶快收藏起来吧!
    1+x证书《Web前端开发》等级考试样题
    云服务器、VPS、虚拟主机三者之间的区别?
    1+X”中级Web前端证书对应课程分析
    轻松装Win10:VMware Workstation 12虚拟机下载
    网站收录提交入口
    使用coding和hexo快速搭建博客
    宝塔安装Lsky Pro图床教程
    jsDeliver+github使用教程,免费的cdn
  • 原文地址:https://www.cnblogs.com/liuyongsheng/p/6777322.html
Copyright © 2011-2022 走看看