• Docker学习(二) 数据卷(Volume)的使用


    1.创建一个数据卷

    2.挂载一个主机文件或目录作为数据卷

    3.创建数据卷容器

    4.删除数据卷

    5.备份、恢复数据卷

    1.创建一个数据卷

    查看镜像docker images

    REPOSITORY TAG    IMAGEID      CREATED     SIZE
    ubuntu     16.04  77be327e4b63 4 weeks ago 124MB
    registry   2.2    ad379b517aa6 4 years ago 225MB

    创建容器时,创建数据卷

    docker run --name test -v /var/test -t -i ubuntu:16.04 /bin/bash
    进入容器
    cd /var/test
    echo "123" > 123

    返回宿主机

    查看宿主机上数据卷的目录

    docker inspect test(容器名)|grep /var/lib/docker/volumes
    输出"Source""/var/lib/docker/volumes/d63dfa0c733e120fb49ce3afaf86a5fa642e2c07046a744ddbc41cce31a1fc09/_data",
    cd /var/lib/docker/volumes/d63dfa0c733e120fb49ce3afaf86a5fa642e2c07046a744ddbc41cce31a1fc09/_data

     ls 就能看到在容器里创建的123文件

    2.挂载一个主机文件或目录作为数据卷

    echo "453" > /var/html/123 
    docker run -t -i --name test1 -v /var/html/123(宿主):var/html/123(容器):ro ubuntu:16.04 /bin/bash

    :ro设置文件只读,挂载的数据默认是可读可写

    3.创建数据卷容器

    docker run -t -i -v /var/volume1 -v /var/volume2 --name data ubuntu:16.04 /bin/bash

    查看宿主机上与数据卷对应的目录

    docker inspect data|grep /var/lib/docker/volumes
    "Source""/var/lib/docker/volumes/c0e076e513c37bb6ba6d695d4663cc78e824685ace45e557d414df73de1785b4/_data",
    "Source""/var/lib/docker/volumes/4a8bbd02daa3a7f2081e85fe0652d340ca823e8dbd834fdef50cca6eff68fa28/_data",

    4.删除数据卷

    docker volume rm 4a8bbd02daa3a7f2081e85fe0652d340ca823e8dbd834fdef50cca6eff68fa28

    docker rm -vf data

    连容器一起删除

    5.备份、恢复数据卷

     备份volume1

    root@iZ8ldyhuwn988qZ:/# docker run -i -t --rm --volumes-from data -v $(pwd):/backup ubuntu:16.04 tar cvf /backup/backup.tar /var/volume1 
    tar: Removing leading `
    /' from member names
    /var/volume1/
    /var/volume1/123
    root@iZ8ldyhuwn988qZ:
    /# ls
    backup.tar boot etc initrd.img lib lost
    +found mnt proc run srv tmp var vmlinuz.old
    bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz

    为了利用数据卷容器备份,使用--volumes-from标记来创建一个加载data容器卷的容器,并从主机挂载当前目录到容器的/backup目录。并备份data卷中的数据,执行完成之后删除容器--rm,此时备份就在当前的目录下了。

    恢复volume1

    先删除容器volume1

    rm -rf /var/volume1

    docker run --rm --volumes-from data -v $(pwd):/backup ubuntu:16.04 tar xvf /backup/backup.tar -C /
    注意-C后面的路径,这个路径表示将数据恢复到容器里的路径。
    命令中用"/",即表示将backup.tar中的数据解压到容器的/路径下。后面跟什么路径,就解压到这个路径下。因此这里用"/"
    root@iZ8ldyhuwn988qZ:/# docker run --rm --volumes-from data -v $(pwd):/backup ubuntu:16.04 tar xvf /backup/backup.tar -C /
    var/volume1/
    var/volume1/123
    root@iZ8ldyhuwn988qZ:/# docker attach data 
    root@67a8bededa9d:/var/volume1# 
    root@67a8bededa9d:/var/volume1# ls
    123
    root@67a8bededa9d:/var/volume1# 

    参考:https://www.cnblogs.com/kevingrace/p/6238195.html

    https://www.web3.xin/code/2879.html

    感谢阅读!

  • 相关阅读:
    Eclipse Java EE IDE for Web Developers集成的Maven 3 指向自己安装的 Maven
    Maven下载、安装和配置(二)
    shell脚本 如何调用Mysql的存储过程 解决方案
    Crontab的格式
    PHP 垃圾回收机制
    ChromePHP
    PHP 优化详解
    PHP 获取网页301|302真实地址
    PHP 常用函数回顾
    PHP基础 CGI,FastCGI,PHP-CGI与PHP-FPM
  • 原文地址:https://www.cnblogs.com/lyc642983907/p/12559778.html
Copyright © 2020-2023  润新知