zoukankan      html  css  js  c++  java
  • 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

    感谢阅读!

  • 相关阅读:
    .NET开发框架(六)-架构设计之IIS负载均衡(视频)
    Docker(二)-在Docker中部署Nginx实现负载均衡(视频教程)
    Docker(一)
    .NET Core跨平台部署于Docker(Centos)- 视频教程
    CentOS7 vsftp 安装与配置(视频教程)
    Hyper-V + CentOS7 安装教程(视频)
    火热的云原生到底是什么?一文了解云原生四要素!
    广州.NET微软技术俱乐部微信群各位技术大牛的blog
    .NET开发框架(五)-IIS上部署ASP.NET Core项目教程
    VMware 虚拟机网络配置
  • 原文地址:https://www.cnblogs.com/lyc642983907/p/12559778.html
Copyright © 2011-2022 走看看