Docker 实践经验(三):Docker 容器数据卷
@[toc]
容器数据卷?是什么
但凡是数据,都逃不开一个最基本的问题:数据丢了怎么办?所以就衍生出各种备份方案。Docker 也是如此,你就不怕哪天容器让人给删了吗?
卷就是目录或文件,存在于一个或多个容器中,由 docker 挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System 提供一些用于持续存储或共享数据的特性。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此 Docker 不会在容器删除时删除其挂载的数据卷。
如何挂载容器卷
其实这篇内容很简单,就讲一下什么是容器卷,以及怎么挂载,再演示一下就完了。
演示一:数据恢复
演示步骤:
我对几条重要命令解释一下:
这里我给它起了个名字,不起也可以,但是想到我自己都有名字,它没名字怪可怜的。--privileged=true:Docker 挂载主机目录访问。如果出现 cannot open directory .: Permission denied,那就加上这个参数。/tmp/myHostData:/tmp/myDockerData:在容器内 /tmp/myDockerData 目录下的所有文件及时同步到 宿主机内的 /tmp/myHostData 目录下,这两个路径可以是本不存在的,会自动创建。
可以看到,在我删除了原 myu 实例之后在启动容器,连目录都丢了,何况目录下的文件。
可以挂载多个目录,每次挂载都来个 -v 就好,下一章会看到。
演示二:宿主机数据传入容器
熟悉吗?我们以前使用 VMware 的时候,也都有从宿主机上传文件进 VMware 上的系统吧。
演示步骤:
敲错命令了。。。mkdir 是创建目录。。。
演示步骤:
由此可见,这个容器卷可不仅仅是一个数据持久化的工具哦,它是可以双向通信的。
有个事儿忘了说,挂在之后一定要确定一下是否挂载上了,有个命令:
看到有如下:
当然,我个人更喜欢直接再挂载路径下新建一个小文件,看它有没有通就知道了。
读写规则
容器卷也是可以设置读写规则的。默认是读写全开。
等同于
如果这样写,就是只读权限:
只读权限下,容器只能从数据卷中读取数据,而不能将数据同步至数据卷中。
那有没有只写?很可惜,莫得。。。
卷的继承和共享
一个容器启动时,可以继承另一个容器的卷规则。你可能会觉得,就那么几个字符都不愿意去 cv 一下嘛,还要去别的容器那边去继承来。看似有点鸡肋,但是存在即合理不是吗?毕竟我们现在容器卷就一个,看着简单,到下一篇我们把集群放上容器的时候你再看哈哈。
命令也很简单:
呐,就这么简单我就不再多解释了吧。
这时候如果有眼尖的人很快就会想到,那如果容器一挂了呢?容器二和宿主机之间还能正常通信么?可以自己玩玩试试。
版权声明: 本文为 InfoQ 作者【看,未来】的原创文章。
原文链接:【http://xie.infoq.cn/article/f7268c49ef10deb816264c6f3】。文章转载请联系作者。
评论