Docker (五):数据卷和数据卷容器
一、介绍
数据卷是一个可供一个或多个容器使用的特殊目录,可以提供很多有用的特性:
-
- 数据卷可以在容器之间共享和使用
- 对数据卷的修改会立刻生效
- 对数据卷的更新,不会影响镜像
- 数据卷默认会一直存在,即使容器被删除
数据卷容器其实就是一个普通的容器,只是专门用来提供数据卷,供其他的容器挂载。推荐优先使用数据卷容器。
二、创建和使用数据卷
1. 数据卷:-v
在用 docker run 命令的时候,使用 -v 标记来创建一个数据卷并挂载到容器里。在一次 run 中多次使用可以挂载多个数据卷,如:
docker run -v /data -v /backup -d docker.io/redis:latest
也可以挂载一个主机目录作为数据卷,如:
docker run -v /opt/data:/data -d docker.io/redis:latest
2. 数据卷容器:--volumes-from
-
- 创建数据卷容器:docker run --name sawyer-dbdata --privileged=true -v /opt/data:/data -d centos /bin/bash
- 使用数据卷容器:docker run --name sawyer-redis --privileged=true -p 6379:6379 --volumes-from sawyer-dbdata -d sawyerlsy/redis:latest
三、删除数据卷
数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v
这个命令。
四、备份、恢复、迁移数据卷
- 备份:docker run --volumes-from sawyer-dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /data 该命令表示从数据卷容器sawyer-dbdata中挂载一个数据卷,并且将主机的当前目录挂载到容器中的/backup中,同时运行打包命令tar,将/data中的数据打包为backup.tar放入/backup中,也就是主机的当前目录中。
-
恢复:如果要将数据恢复到一个新的容器中,时只需要新建一个数据卷容器,并将backup.tar放入挂载目录中即可,如:
将backup.tar解压缩到当前目录:tar -xvf backup.tar
docker run --name sawyer-dbdata --privileged=true -v $(pwd):/data -d centos /bin/bash