Docker 从门到精通(四)一 数据卷的使用

纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。
导读docker 是Linux下面的容器技术,是目前最火的开源技术之一,我们介绍了docker的基本使用,基本命令,本地网络设置,本地仓库等,今天我们介绍下docker的数据卷的使用。一,数据卷的使用有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据。数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

QoS安全路由器 侠诺 SSL006 上海特惠

数据卷可以在容器之间共享和重用
对数据卷的修改会立马生效
对数据卷的更新,不会影响镜像
数据卷默认会一直存在,即使容器被删除
注意:数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。

国家计算机网络与信息安全管理中心大屏幕业务展示系统更新采购…

添加一个数据卷:
# docker run -d -it –name busybox -v /data/ busybox
这会在容器内创建一个 /data 目录,并加载一个数据卷到容器的 /data 目录。

大数据时代,泛员网如何打造人事信息数据安全屋?

进入容器:
云计算的采用或使组织的IT被边缘化,也给信息安全管理带来了很多挑战,商业运作所依赖的关键数据都会流经哪些外部系统呢?如何有效保护这些数据的安全呢?
# docker exec -it busybox sh
查看目录映射:
# docker inspect -f {{.Volumes}} busybox map[/data:/var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data]可以看到将容器中的 /data 目录映射到了 /var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data 这个目录下,所以数据在容器中的 /data 目录和此目录下是同步的。[[email protected] data]# cd /var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data[[email protected] _data]# touch b
在容器中 /data 目录下查看:
/data # lsa bb 文件依然存在。
数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。
[[email protected] docker]# docker stop eec30d8d6fce[[email protected] docker]# docker rm -v eec30d8d6fce
使用 -v 标记也可以指定挂载一个本地主机的目录到容器中去,-v 标记也可以从主机挂载单个文件到容器中
[[email protected] docker]# docker run -it –name mybusybox -v /data:/data busybox sh
这种方法相当于在本机中指定了要映射的目录,将本地的数据卷 /data 目录加载到容器中的 /data 目录。
/ # cd /data//data # lsa/data # touch c
然后在本机的 /data 目录查看 c 文件是否存在:
[[email protected] data]# ls a c
Docker 挂载数据卷的默认权限是读写,用户也可以通过 :ro 指定为只读。
# docker run -it –name mybusybox -v /data:/data:ro busybox sh
二,数据卷容器如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
[[email protected] data]# docker run -d -v /data/ –name dbdata busybox #首先,创建一个名为 dbdata 的数据卷容器
然后,在其他容器中使用 –volumes-from 来挂载 dbdata 容器中的数据卷。
# docker run -d –volumes-from dbdata –name db1 nginx # docker run -d –volumes-from dbdata –name db2 nginx
也可以使用 –volumes-from 来挂载来自多个容器的多个数据卷:
# docker run -d –name db3 –volumes-from db1 –volumes-from db nginx
提示:使用 –volumes-from 参数所挂载数据卷的容器自己并不需要保持在运行状态。
备份数据卷
首先使用 –volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。命令如下:
# docker run –volumes-from dbdata -v /data:/backup busybox tar cvf /backup/backup.tar.gz /data/

恢复
如果要恢复数据到一个容器,首先创建一个带有空数据卷的容器 dbdata2。
# docker run -v /dbdata –name dbdata2 ubuntu /bin/bash
然后创建另一个容器,挂载 dbdata2 容器卷中的数据卷,并使用 untar 解压备份文件到挂载的容器卷中。
# docker run –volumes-from dbdata2 -v /data:/backup busybox tar xvf /backup/backup.tar.gz
为了查看/验证恢复的数据,可以再启动一个容器挂载同样的容器卷来查看
# docker run –volumes-from dbdata2 busybox /bin/ls /dbdata
删除数据
如果删除了挂载的容器(db1 和 db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。
原文来自:http://www.tianfeiyu.com/?p=2426编辑:田飞雨
本文地址:http://www.linuxprobe.com/docker-data-use.html编辑:陶武杰,审核员:逄增宝
让您学习到的每一节课都有所收获《Linux就该这么学》是由资深运维专家刘遄及全国多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。
☀刘遄老师QQ:5604241 微信:gnu_chuan
☀学员助教QQ:5604674
☀Linux技术交流A群(满):560843
☀Linux技术交流B群:340829
☀Linux技术交流C群:463590
☀Linux技术交流D群:915246(新群,火热加群中……)
从IaaS到AI 马云为何让阿里云扛人工智能大旗?
☀官方站点:www.linuxprobe.com
☀ 电脑在线阅读效果更佳:
http://www.linuxprobe.com/chapter-00.html
按住图片3秒,即可自动关注。
点击左下角查看更多热门技术
该文章作者已设置需关注才可以留言
微信扫一扫关注该公众号

多家跨国公司获信息安全国际认证,再次表明:客户的安全需求是组织实施信息安全管理体系的一大驱动力。

猜您喜欢

小议企业级信息安全管理
工作环境安全之尾随防范
位置定位服务LBS泄漏私密信息
潘基文:撤走日大使馆前少女像必须退还10亿日元
LEADER-LOISIRS ARCHITECH4D
保障信息安全的5招必备武功