1. 共享数据卷容器
数据卷容器里面的数据可以在各个容器间进行共享。下面演示下操作。
1.1 创建数据卷容器
数据卷容器,顾名思义,就是将一个正常的容器作为数据卷,让其他容器通过挂载这个容器实现数据共享.可是值得注意的是,数据卷容器会降低I/O性能。
首先创建一个数据卷容器,挂载到容器的/data目录。
# 这里我们把ubuntu镜像生成的容器作为数据卷容器
docker run -it -v /data --name data ubuntu
# 在data目录下随便生成点内容
echo data >> data.txt
# 退出数据卷容器
exit
1.2 共享数据卷
# 其他ubuntu镜像构建的容器共享数据卷
docker run -it --volumes-from data --name data1 ubuntu
#其他非ubuntu镜像构建的容器共享数据卷
docker run -it --volumes-from data --name data2 docker/whalesay
1.3 共享数据卷的注意点
- 数据卷容器可以在停止状态下被使用
- 支持数据卷的级联挂载
- 如果使用–volumes-from挂载多个数据卷容器时,如果对应的容器挂载的目录是相同的,那么只有最后一个–volumes-from指定的数据卷容器会挂载成功.
2. 备份恢复
对data这个数据卷容器下的/data目录进行备份,然后在其他新建的容器中进行恢复
2.1 备份
为了将容器卷容器下的内容进行备份,我们需要先创建一个共享容器卷内容的容器,并且把容器卷上的目录和本地做映射,这样就可以将备份文件保存到本地了。
# 创建一个加载 data 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。
docker run -it --volumes-from data --name mapper -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar data
2.2 恢复
恢复也需要先创建一个空数据的数据卷容器。然后用这个空数据的数据卷容器新建一个容器,并且把备份文件再这个新建容器中解压,解压完成后,原来的empty_container容器中的/data目录就有数据了
#1. 创建空数据的数据卷容器empty_container
docker run -it -v /data --name empty_container ubuntu
#2. 根据空数据的数据卷容器新建容器,和本地备份文件所在目录做映射,然后在容器内解压备份数据来恢复empty_container中数据卷的内容
docker run -it --volumes-from empty_container --name recovery -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar
# 然后可以进empty_container这个容器看看数据是否恢复了
docker exec -it empty_container /bin/bash
参考资料: