docker学习笔记4 数据管理、持久化
docker 有2种管理数据的方式:
1、数据卷,把容器的数据写到本地硬盘去,相当于mount个磁盘给容器;
2、数据卷容器,有个容器专门管理数据
-------------------------------------------------
数据卷:
docker container run -v 路径 镜像名 在容器内建一个 路径
docker container run -v 本地路径:容器路径 镜像名 在容器内把 本地一个路径 mount 到 容器里的 容器路径 上
docker container run -v 本地路径:容器路径:ro 镜像名 在容器内把 本地一个路径 mount 到 容器里的 容器路径 上,权限是ro,readonly,也可以是rw,默认是rw
--------------------------------------------------
数据卷 容器
在 多个容器之间 共享一些 持续更新的数据,最简单的方式就是用 数据卷容器
docker container run -v 本地路径 --name 数据卷容器名 镜像名 创建数据卷容器, 镜像是用来确定容器的操作系统,bash之类的,所以在镜像库里最好有个操作系统的镜像,比如suse,ubuntu之类的,便于操作数据;数据卷容器并不需要一直运行,exit状态也可以
docker container run --volumes-from 已有的数据卷容器名 --name 容器名 镜像名 新建一个容器,这个容器的数据挂载到 数据卷容器 的目录上
--------------------------------------------------
数据卷 容器 的 备份、恢复
备份例子: docker container run --volumes-from dbdata -v /local_backup:/backup --name backup_worker ubuntu tar cvf /backup/backup.tar /dbdata
稍微有点复杂。。。。挂来挂去。
用ubuntu镜像创建一个容器 backup_worker。
使用--volumes-from 将 backup_worker 挂载到 dbdata 这个 数据卷容器上。
使用 -v /local_backup:/backup 将 容器 backup_worker的 /backup目录挂载到本地 /local_backup 。
backup_worker容器启动后,使用 tar cvf /backup/backup.tar /dbdata 命令,将 数据卷容器dbdata下的内容 通过 --voluemes-from 备份到 backup_worker 容器里 /backup/backup.tar 里,即 通过 -v 把数据转移到宿主机 /local_backup目录下的backup.tar文件。
恢复例子:docker container run -v /dbdata -name dbdata2 ubuntu /bin/bash
用ubuntu镜像创建一个容器 dbdata2,dbdata2里面建一个路径 /dbdata。
docker container run --volumes-from dbdata2 -v ${pwd}:/backup busybox tar xvf /backup/backup.tar
把backup.tar 解压到dbdata2容器里的 /dbdata目录里,实现备份还原的目的。
----------------------------------------------------
备份和还原,来来回回,挂来挂去比较复杂,我也是一知半懂,要试验多两次才有新的体会,将持续更新。