Docker基础-23-数据-数据持久化之Bind Mouting

本文对比Docker的两种数据持久化方法:DataVolume与BindMount,重点介绍了BindMount的使用方法及优势。通过实例演示了如何在不修改Dockerfile的情况下,实现容器内外文件的实时同步,极大提升了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       前面一篇介绍了数据持久化Data Volume,这篇继续来介绍数据持久化的另外一种方式,叫Bind Mouting。这个和Data Volume的区别是什么?Data Volume是需要在Dockerfile里面定义VOLUME对象(例如有这么一定义VOLUME /var/lib/mysql),在Bind Mouting不需要在Dockerfile中定义,只需要在创建容器的过程中,通过-V 参数来指定本地的目录和容器目录的一一对应关系,通过这种方式去做同步。

Bind Mouting VS Data Volume
 
Bind Mouting 举例
我们来通过busybox容器来举例:
执行 docker run -d -v /tmp/busybox:/root/abc --name test1 busybox /bin/sh -c "while true; do sleep 3600; done"
注意这两个路径,在容器里和容器外都没有提前手动创建。

外层的/tmp/busybox路径和容器里/root/abc路径实现了同步,其实就是同一个位置和同一个路径。

先在外层/root/abc路径下创建一个new.txt文件,然后进入容器的/root/abc下看看有没有new.txt


利用exec命令,进入容器

发现在容器中new.txt同步进来了。现在我们反过来,在容器里修改new.txt内容,然后回到容器外的linux下检查是否也跟着修改过来。

我用vi打开文件,添加了一行内容。然后exit退出容器,在外层linux下检查文件是否被修改通过过来。

      通过这个简单的练习,演示了Bind Mouting的效果。其中两个路径我都没刻意提前去创建好,docker会自动创建。两个路径是一一对应的关系,实际上就是同一个路径,文件可以同步。

       这种同步效果,对于开发人员来说,很方便。假如我上面演示的是一个前端页面的代码文件,通过这样同步机制,很快进行代码修改和测试修改的效果。只需要在外层路径替换新的代码文件,容器不需要关闭,只需要刷新下浏览器,就可以看到刚刚修改代码的效果。本篇关于数据持久化第二种方法Bind Mouting就学习到这里。

      关于Docker基础的学习,就学习到这里。对于一个没有接触Docker的新人来说,学习到这里,可以应对面试,因为很少人是需要在工作中去写Dockerfile的,基本上是拿别人的镜像启动容器,开启服务,然后环境好了,开始测试。对于开发人员和运维,可能接下来还需要去学习Docker的Compose和swarm集群管理,这部分算中级篇的内容。除非你项目中实际在使用docker,不然像了解下的人,学习到这就可以了。基础就四部分,镜像,容器,网络和存储,需要多练习下常用的命令,主要还是容器操作命令。想继续学习Docker的人,可以去网上或者群里找人要《系统学习Docker践行DevOps理念》的视频教程。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值