4.docker数据卷管理

Posted soulmates

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

技术分享图片












以上是关于4.docker数据卷管理的主要内容,如果未能解决你的问题,请参考以下文章

docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]

docker数据卷管理及网络基础配置

docker数据管理与网络通信之数据卷与数据卷容器

docker 数据管理数据卷

Docker之七:Docker数据卷管理

Docker 数据管理(数据卷容器/镜像创建)