4.docker数据卷管理

生产过程中使用docker往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,因此就需要数据卷来做数据持久化

*数据卷:容器内数据直接映射到本地主机环境

数据卷的特性:

1)可以在容器之间共享和重用,容器间传递数据变得高效方便

2)对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作

3)对数据卷的更新不会影响镜像,解耦了应用和数据

4)卷会一直存在,直到没有容器使用,可以安全地卸载它

创建数据卷

docker run -it --name web -v ~/webapp:/webapp ubuntu:latest /bin/bash

本地目录必须是绝对路径,如果目录不存在docker会自动创建

修改数据卷的权限,默认是rw(读写),ro(只读)

docker run -it --name web -v ~/webapp:/webapp:ro ubuntu:latest /bin/bash

*数据卷容器

创建数据卷容器:

docker run -it --volumes-from web --name web2 ubuntu

可以多次使用--volumes-from参数来从多个容器挂载多个数据卷。

还可以从其他已经挂载了容器卷的容器来挂载数据卷

如果删除了挂载数据卷的容器,数据卷并不会自动删除。

如果要删除一个数据卷,必须在最后一个还挂载着它的容器显式

使用docker rm -v命令指定同时删除关联的容器

*docker数据卷备份
mkdir backup &&cd backup #在物理机上创建backup目录
docker run --volumes-from webapp -v $(pwd):/backup --name worker ubuntu
tar cvf /backup/backup.tar /webapp
#这个命令的原理是:新创建一个容器worker,连接了数据卷容器webapp,并将物理机backup目录映射到worker的/backup,
然后tar命令就将数据卷webapp的/webapp目录打包到/backup-->物理机backup目录

*docker数据卷还原到其他容器
先建立一个新容器
docker run -it -v /webapp --name db1 ubuntu /bin/bash
相同的原理,新建一个容器worker1,连接了数据卷容器db1,映射了物理机backup目录到worker1的/backup目录,tar命令将
备份包还原到db1的/webapp下,完成还原
docker run --volumes-from db1 --name worker1 -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

如果还原到原容器
 docker run --volumes-from webapp -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

猜你喜欢

转载自www.cnblogs.com/soulmates/p/9242836.html
今日推荐