4.docker数据卷管理

xiaoxiao2021-03-01  25

生产过程中使用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

 

转载请注明原文地址: https://www.6miu.com/read-4150210.html

最新回复(0)