博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker基础-23-数据-数据持久化之Bind Mouting
阅读量:4302 次
发布时间:2019-05-27

本文共 1225 字,大约阅读时间需要 4 分钟。

       前面一篇介绍了数据持久化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理念》的视频教程。

 

转载地址:http://skows.baihongyu.com/

你可能感兴趣的文章
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day05
查看>>
学习笔记_vnpy实战培训day06
查看>>
Python super钻石继承
查看>>