9. Docker 数据

0. 前言

我们在使用docker时有时需要对一些数据进行持久化,但是容器删除之后容器内的数据就会丢失,而由于升级等原因容器又非常又可能被删除或替换,所以将数据与容器进行解绑成了我们唯一的选择,docker提供了两种方式

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

数据相关的命令为创建容器时的一下命令

选项类型说明
-v--volumelist挂载主机上的文件卷到容器内
--volume-driverstring挂载文件卷的驱动类型
--volumes-fromlist从其他容器挂载卷

1. 数据卷

1.1. 数据卷的特性

  • 数据卷可以在重启键共享和重用,可以在容器间传递数据
  • 对数据卷内的数据修改立马会生效,无论是在容器内操作还是宿主机内操作
  • 对数据卷的操作不会影响镜像,解耦了应用和数据
  • 卷会一直存在,直到没有容器使用,可以安全卸载它

1.2. 在容器内创建一个数据卷

> docker run -itd -v /data ubuntu # 在后台启动一个ubuntu
fefc9625aa760b7986ae3b5a307571af81b9338ec7be5cecd54c57f1c72c5ab0 # 容器的id
> docker exec -it fefc /bin/bash # 进入容器
>ls

执行上面的命令 会发现在容器中创建了一个目录 那么问题来了 这样写跟进入容器然后创建一个目录有区别吗?
最大的区别在于 在容器中创建的目录无法被其他容器通过--volumes-from进行挂载

1.3. 挂载一个宿主机目录作为数据卷

  • 宿主机目录必须为绝对路径
  • 如果宿主机目录不存在会自动创建
  • 可以多次使用-v选项来挂载多个目录
  • 权限默认为rw
  • 挂载格式为 宿主机目录:容器目录[:权限]

权限: 写 rw 读 ro

> docker run -itd -v /data:/c/data ubuntu # 在后台启动一个ubuntu
6c8ccdd8123eb9455bf30aefa8934002c4c8afaf764883c06dea4b8e5557c423 # 容器的id
> docker exec -it 6c8c /bin/bash # 进入容器

在宿主机目录下创建一个文件写入内容 容器中同样会有这个文件和内容
在容器目录下创建一个文件写入内容 宿主机中同样会有这个文件和内容

1.4. 挂载一个宿主机文件作为数据卷(不推荐)

-v 也可以挂载文件到容器中 宿主机文件:容器文件[:权限]

2. 数据容器

  • 挂载的数据容器不需要在运行状态
  • 可以多次使用 --volumes-from 挂载多个数据卷
  • 可以从其他已经挂载了容器卷的容器来挂载数据卷
  • 如果一个容器挂载了多个数据卷,挂载他的容器将拥有它所拥有的所有数据卷

2.1. 创建并挂载数据容器

  • 通过 -v 创建一个挂载了容器卷的容器
  • 在应用容器中通过 --volumes-from 从数据容器中挂载数据卷
docker run -itd -v /dbdata --name dbdata ubuntu # 创建数据卷容器
docker run -itd --volumes-from dbdata --name db1 ubuntu # 创建容器1
docker run -itd --volumes-from dbdata --name db2 ubuntu # 创建容器2

进入容器1 创建一个目录 hello

docker exec -it db1 /bin/bash
mkdir /dbdta/hello

然后进入容器1 容器2 数据卷容器 你会发现都会有目录

2.2. 迁移数据

2.2.1. 备份

2.2.2. 恢复

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值