前言:生产环境中使用docker时,往往需要对数据进行持久化(只有把容器导出为镜像,才能够保存写的数据,否则容器删除或者停止,所有数据都会没有),或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作
容器中管理数据主要有两种方式:
1、数据卷:容器内数据直接映射到本地主机环境
2、数据卷容器:使用特定容器维护数据卷。能在容器和主机、容器和容器之间共享数据,并实现数据的备份和恢复。
本博客主要围绕数据卷容器进行开展~~~
一、定义数据卷容器
搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷,实现多个容器之间共享数据(类似NFS)
1、docker images 查看现有的镜像
2、用镜像 install_net,建立数据卷容器 windysai
docker run -itd -v /data/docker/ --name windysai install_net bash
(1)-v /data/docker/ :容器里面
(2)windysai 名字任意
3、进入windysai容器
docker exec -it windysai bash
——》会发现容器里面多了一个 /data/docker 的目录
4、用 centos-6-x86_64 挂载windysai数据卷
docker run -itd --volumes-from windysai centos-6-x86_64 bash
(1)进去容器:docker exec -it dfdbe7e8b64 bash
发现存在数据卷容器的目录 /data/docker
(2)测试
mkdir /data/docker/test; touch /data/docker/ljy.txt
5、重新进入windysai 容器里
ls /data/docker 有 test 目录和文件 ljy.txt
二、数据卷备份(画了个图才比较好理解 = =)
如果做了数据卷(容器内数据直接映射到本地主机环境),那就没必要做数据卷的备份,只要定时备份服务器硬盘的数据就行
如果没有做映射 ——》做数据卷的备份
【1】备份
思路:
使用上面的windysai数据卷新开一个容器,同时把本地的 /vol_data_backup/ 目录挂载到该容器的 /backup 下,这样在容器中 /backup 目录里面新建的文件,就可以直接在/vol_data_backup/ 目录中看到了;最后再把 /data/ 目录下面的文件打包成 data.tar,放到 /backupx 下面
1、在宿主机的磁盘上,创建要备份数据的目录
mkdir /vol_data_backup
2、新建容器,挂在数据卷(共享数据卷 windysai 的/data/docker 目录)
docker run -itd --volumes-from windysai -v /vol_data_backup/:/backup centos-6-x86_64 bash
(1)centos-6-x86_64:新容器
(2)/backup:映射到容器里面的目录
3、docker exec -it 2b6960b5 bash
(1)看到 /backup 为空
(2)/data/docker 存在数据卷分享出来的目录,也就是我们要备份的目录
(3)备份
tar -cvf /backup/data.tar /data/docker/
4、退出容器exit,查看宿主机目录
三、数据卷恢复
思路:先新建一个数据卷容器,再建一个新的容器饼挂载该数据卷容器,然后再把 tar 包解包
1、新建第二个数据卷容器
docker run -itd -v /data/docker/ --name second install_net bash
2、挂载数据卷,新建容器
docker run -itd --volumes-from second -v /vol_data_backup/:/backup install_net
3、进入容器
docker exec -it da94996d1 bash, ls /bacukup/
4、在根目录下解压
cd /
tar xvf /backup/data_20190110.tar