docker容器运行,产生一些数据/文件/等等持久化的东西,不应该放在容器内部。应当以挂载的形式存在主机文件系统中。
- 镜像与容器读写层,通过联合文件系统,组成系统文件视角
- 容器服务运行中,一定会生成数据
- 容器只是运行态的服务器,是瞬时的,不承载数据的持久功能
一、创建宿主机默认位置进行文件挂载
我们通过docker inspect data查看容器元数据,可看到挂载信息
二、指定主机目录方式挂载文件
格式:-v path1:path2
如下命令,容器方会自动增加一个data目录
三、通过共享其他容器的挂载文件volumes-from引用数据卷
新启一容器,引入上一步的data容器目录,自动得到同一个目录,内容与data容器里挂载一样
备份/恢复数据卷
备份:docker run --rm --volumes-from data -v $(pwd):/backup centos tar cvf /backup/data.tar /opt/data
恢复:docker run --rm --volumes-from data -v $(pwd):/backup centos tar xvf /backup/data.tar -C /
释义:
docker run --rm ----- 启动一个新的容器,执行完毕删除
--volumes-from data ------- data容器中挂载卷
-v $(pwd):/backup --------挂载当前目录到容器中为backup
cvf /backup/data.tar /opt/data --------- 备份/opt/data目录(即卷中所有的数据)为data.tar
xvf /backup/data.tar -C / ---------- 解压data.tar 到根目录/ ,因tar归档中已包含了/opt/data路径
删除数据卷:
docker rm -v data