• 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
  • 相关阅读:
    Ajax ToolKit ModelPopupExtender报错:Sys.InvalidOperationException: Handler was not added through the Sys.UI.DomE
    C# 注释 类头部
    matlab练习程序(图像滤波时的边界处理2)
    更改chrome默认搜索引擎
    matlab练习程序(表面模糊)
    matlab练习程序(三阶张量TQR分解)
    linux命令行关机
    matlab练习程序(奇异值分解压缩图像)
    matlab练习程序(方框模糊)
    matlab练习程序(图像滤波时的边界处理)
  • 原文地址:https://www.cnblogs.com/liuyongsheng/p/6777322.html
Copyright © 2020-2023  润新知