首页 > 代码库 > 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数据管理