Docker持久化存储与数据共享

一.Docker持久化数据的方案

  • 基于本地文件系统的Volume:可以在执行docker create或docker run时,通过-v参数将主机的目录作为容器的数据卷。这部分功能便是基于本地文件系统的volume管理。
  • 基于plugin的Volume:支持第三方的存储方案,比如NAS,aws
1.Volume的类型
  • 受管理的data Volume,由docker后台自动创建
  • 绑定挂载的Volume,具体挂载位置可以由用户指定

二.数据持久化:Data Volume

1.操作流程
  • 注意:mysql的Dockerfile中由VOLUME ["/var/lib/mysql"]指定了持久化的路径,此路径是要被持久化的路径,默认volume的名称为local
  • 执行sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql启用一个mysql的image容器,其中-v后跟的mysql表示volume别名,冒号后面的路径为volume本地存储的地址
  • 查看sudo docker volume ls查看docker的volume,会发现自动生成了一个volume
  • 通过sudo docker volume inspect volume的NAME值查看对应volume的详情信息
  • 如果希望删除volume,则可以使用sudo docker volume rm volumeNAME
2.恢复volume数据
  • 上述操作后会将数据存储到/var/lib/mysql中,我们可以对container中的mysql数据进行增删改查操作
  • 通过sudo docker rm mysql1移除container
  • 此时查看/var/lib/mysql路径仍然存储volume
  • 我们可以使用sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql再次开启一个container,此时的volume会延用之前的数据实现数据的恢复

三.数据持久化:Bind Mounting

1.与Data Volume的区别
  • Data Volume需要在Dockerfile中定义要创建的volume
  • Bind Mounting是在运行时指定本地目录与容器中目录的一一对应关系即可docker run -v /home/aaa:/root/aaa
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值