Docker数据管理


1. 简介

场景:

  • 容器中的数据需要持久化
  • 多个容器间数据需要共享

数据管理方式:

  • 数据卷(Data Volumes):容器内数据直接映射到本地主机环境
  • 数据卷容器(Data Volume Containers):使用特定容器维护数据卷

2. 数据卷(Data Volumes)

解释:将主机目录映射进容器,类似mount

特性:

  • 可以在容器间共享和重用
  • 主机和容器都可以修改,且立刻生效
  • 不影响镜像
  • 一直存在,直到没有容器使用,可以安全卸载

类型:

  • volume:普通数据卷,映射到主机/var/lib/docker/volumes路径下
  • bind:绑定数据卷,映射到主机指定路径下
  • tmpfs:临时数据卷,只存在于内存中

2.1. 创建普通数据卷

使用docker volume COMMAND命令

命令格式:docker volume COMMAND

命令:

命令注释
createCreate a volume
inspectDisplay detailed information on one or more volumes
lsList volumes
pruneRemove all unused volumes
rmRemove one or more volumes

使用docker volume create命令

命令格式:docker volume create [OPTIONS] [VOLUME]

选项:

短格式长格式注释
-d–driver stringSpecify volume driver name (default “local”)
–helpPrint usage
–label listSet metadata for a volume (default [])
-o–opt mapSet driver specific options (default map[])

示例:
docker volume create -d local test
在/var/lib/docker/volumees下会有test数据卷(是一个目录)

2.2. 绑定数据卷

绑定数据卷:在容器创建时,直接将主机任意路径挂载到容器内作为数据卷

使用docker [container] run命令的--mount选项
该选项对三种类型数据卷均支持

示例:
docker run -d -P --name web --mount type=bind, source=/webapp, destination=/opt/webapp training/webapp python app.py
或者:
docker run -d -P --name web -v /webapp:/opt/webapp training/webapp python app.py
改为只读:
docker run -d -P --name web -v /webapp:/opt/webapp:ro training/webapp python app.py

3. 数据卷容器(Data Volume Containers)

数据卷容器是一个容器,专门提供数据卷给其他容器

示例:
创建一个数据卷容器,并在其中创建一个数据卷挂载到/dbdata
docker run -it -v /dbdata --name dbdata ubuntu
在db1和db2容器中使用–volumes-from来挂载dbdata容器中的数据卷
docker run -it --volumes-from dbdata -name db1 ubuntu
docker run -it --volumes-from dbdata -name db2 ubuntu
从已挂载的数据卷的容器中挂载容器卷
docker run -d --volumes-from db1 -name db3 ubuntu

注意:删除了dbdata,db1,db2,数据卷并不会自动删除,在删除最后一个还挂载的容器时,显式使用docker rm -v命令删除容器同时删除数据卷

创建多数据卷容器:
docker run -it -v /dbdata1 -v /dbdata2 --name db centos:7

4. 利用数据卷容器来迁移数据

4.1. 备份

docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata

注释:

  1. 使用ubuntu镜像创建容器worker
  2. 使用–volumes-from dbdata挂载dbdata容器数据卷
  3. 使用-v $(pwd):/backup挂载当前目录到worker容器的/backup目录
  4. worker容器启动,使用tar cvf /backup/backup.tar /dbdata将dbdata中dbdata目录备份

4.2. 恢复

docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值