答案:数据卷和数据卷容器。数据卷实现容器到宿主机之间的映射;而数据卷容器实现容器到容器之间的映射。
数据卷:容器内数据直接映射到本地主机环境。就是将宿主机的某个目录,映射到容器中,作为数据存储的目录,我们就可以在宿主机中对数据进行存储。
数据卷特性:
(1)数据卷可以在容器之间共享和重用,本地与容器间传递数据更高效
(2)对数据卷的修改会立马有效,容器内部与本地目录均可
(3)对数据卷的更新,不会影响镜像,对数据与应用进行了解耦操作
(4)卷会一直存在,直到没有容器使用
格式:docker run -itd --name 容器名 -v 宿主机目录:容器目录 镜像名 命令
演示:docker run -itd --name haha2 -v /home/sxf/test/:/tmp-test ubuntu
文件格式:docker run -itd --name 容器名 -v 宿主机文件:容器文件 镜像名 命令(可选)
演示:docker run -itd --name haha3 -v /home/sxf/test/a.txt:/tmp-test/nihao.sh ubuntu
数据卷容器:需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。使用特定容器维护数据卷。
步骤:
(1)创建一个数据卷容器data-store
格式:docker create -v 数据卷容器目录 --name 容器名 镜像名
演示:docker create -v /data --name data-store ubuntu
(2)创建两个容器haha4和haha5,同时挂载至数据卷容器data-store
格式:docker run --volumes-from 数据卷容器名或id -itd --name 要新建的容器名 镜像名
haha4:docker run --volumes-from data-store -itd --name haha4 ubuntu
haha5:docker run --volumes-from data-store -itd --name haha5 ubuntu
两个容器haha4、haha5之间的共享数据其实是在数据卷容器的data目录中,由于工作中很多的容器的数据需要查看,所以需要将数据卷容器中的数据 备份到宿主机中。
备份方案:
创建 一个新的临时容器linshi,用完后自动删除,用来挂载数据卷容器data-store
格式:docker run --rm --volumes-from 数据卷容器id/名字 -v 宿主机目录:临时lin容器目录 依赖镜像名 备份压缩命令
演示:在宿主机本地创建一个备份目录:mkdir backup
docker run --rm --volumes-from data-store -v /home/sxf/backup/: /backup/ ubuntu tar zcPf /backup/data.tar.gz /data(数据卷容器共享目录)
检查:ll backup/
解压这个文件查看详细信息: