首页 > 代码库 > docker数据管理

docker数据管理

1. 挂载宿主机上面的目录到容器里(实现宿主机和容器数据共享)

  • docker run -tid -v /data/:/data aming bash //-v 用来指定挂载目录,:前面的/data/为本地目录,:后面的/data/为容器里的目录 (在启动容器的时候才能挂载)

  • 例子:docker run -itd -v /data/:/data centos bash (centos 位image镜像的名字)

  • 注意:不管是在docker容器里删除还是在宿主机上面删除,都会消失的,但是把整个dokcer容器给删除了,数据不会丢失的


2 定义数据卷容器


    • 有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。

    • 首先建立数据卷容器

    • dockerrun -itd -v /data/ --name testvol aming/centos  bash  //注意这里的/data/是容器的/data目录,并非本地的/data/目录。 

    • 例子:docker run -itd -v /data/ --name hu centos bash
      564c2b15b1aa8b9a492ca6ac65157aa3b9824ec0e48328feaeefd24658ba1772
    • 说明:centos 是镜像的名字,hu是自定义的容器卷名字

    • 然后让其他容器挂载该数据卷

    • docker run -itd  --volumes-from testvol aming bash

    • 例子:root@docker /]# docker run -itd --volumes-from hu cnetos-6-x86  bash
      4147a90ed6d631577cc2f67f17915af2f413c74f32848c0310a12e36d672d693
    • 说明:cnetos-6-x86 是镜像的名字  hu 必须跟上面的名字一样

      上面的414这个容器已经挂载了上面容器卷的data目录

    • 同一个镜像可以多次执行这个命令 ,每个生成的id都不一样

    • docker run -itd --volumes-from hu --name web1 cnetos-6-x86 bash
      62d4e94ed8f35a6d9ee2c0798ac1841cc8d1afa8e236f2748ef23b7910a277b3
    • 验证: 可以登录到一个容器里面看是否挂载上了 最后跟数据卷容器对比

    • docker exec -it  62d4e /bin/bash  


3 备份容器里面的数据

  • mkdir/vol_data_backup   ##在宿主机上面建立一个备份目录

  • docker run -itd --volumes-from testvol -v  /vol_data_backup/:/backup centos bash

  • 例子:[root@docker /]# docker run -itd --volumes-from  hu  -v /vol_data_backup/:/backup centos bash  

##把宿主机上面的vol_data_backup 这个目录挂载到容器里面的back目录下并且同时把容器卷也挂载上(就是hu)

  • de35d1af7e2ad8bc8784005f41faca12df89de7056b5a8f9781f9b3cff66c7a4 

  • tar cvf /backup/data.tar /data/   ##把data目录下的文件打包放到backup目录下,即会自动同步到宿主机上面的vol_data_backup 这个目录下即容器上面的数据会保存到宿主机上面


4 恢复数据到新容器

  • 思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包。

  • 新建数据卷容器:docker run -itd -v /data/ --name testvol2 centos bash (会产生一个新的容器卷)

  • 例子:docker run -itd -v /data/ --name testvol2 centos bash

  • 424b50ef2554067012301efaf94a711779c0419cee734886f3cae0487af6187f

  • 挂载数据卷新建容器,并解包:

  • docker run -itd --volumes-from testvol2  -v /vol_data_backup/:/backup centos

  • ##把原来宿主机上面的备份的那个目录挂载到新的容器里


  • tar xvf /backup/data.tar    

  • 也可以先登录到这个容器之中,然后在解压

 

本文出自 “渐行渐远” 博客,请务必保留此出处http://825536458.blog.51cto.com/4417836/1905545

docker数据管理