什么是Docker Volume?

摘要Docker Volume,通常翻译为数据卷,用于保存持久化数据。当我们将数据库例如MySQL运行在Docker容器中时,一般将数据通过Docker Volume保存在主机上,这样即使删除MySQL容器,数据依然保存在主机上,有效保证了数据的安全性。这篇博客将通过简单的实践帮助大家理解什么是Docker Volume
[![]

img_f683126dae41279d62d2212750ec89ac.jpe
docker_volume.jpg

本文所有命令都是在play-with-docker的在线Docker实例上执行,Docker版本为17.05.0-ce
1. 指定Docker Volume
使用docker run命令,可以运行一个Docker容器
docker run -itd --volume /tmp/data1:/tmp/data2 --name test ubuntu bash

基于ubuntu镜像创建了一个Docker容器。
容器的名称为test,由--name选项指定。
Docker Volume--volume选项指定,主机的/tmp/data1目录与容器中的/tmp/data2目录一一对应。

2. 查看Docker Volume
使用docker inspect命令,可以查看Docker容器的详细信息:
docker inspect --format='{{json .Mounts}}' test | python -m json.tool[ { "Destination": "/tmp/data2", "Mode": "", "Propagation": "", "RW": true, "Source": "/tmp/data1", "Type": "bind" }]

使用--format选项,可以选择性查看需要的容器信息。.Mount为容器的Docker Volume信息。
python -m json.tool可以将输出的json字符串格式化显示。
Source表示主机上的目录,即/tmp/data1
Destination为容器中的目录,即/tmp/data2

3. 本机文件可以同步到容器
在本机/tmp/data1目录中新建hello.txt文件
touch /tmp/data1/hello.txtls /tmp/data1/hello.txt

hello.txt文件在容器/tmp/data2/目录中可见
使用docker exec命令,可以在容器中执行命令。
docker exec test ls /tmp/data2/hello.txt

可知,在本机目录/tmp/data1/的修改,可以同步到容器目录/tmp/data2/中。
4. 容器文件可以同步到主机
在容器/tmp/data2目录中新建world.txt文件
docker exec test touch /tmp/data2/world.txtdocker exec test ls /tmp/data2/hello.txtworld.txt

world.txt文件在主机/tmp/data1/目录中可见
ls /tmp/data1/hello.txt world.txt

可知,在容器目录/tmp/data2/的修改,可以同步到主机目录/tmp/data1/中。
5. 结论
Docker Volume本质上是容器与主机之间共享的目录或者文件,这样Docker Volume中的数据可以在主机和容器中实时同步。使用Virtualbox创建虚拟机时,也可以配置共享目录,这与Docker Volume非常相似。
欢迎加入我们FundebugDocker技术交流群: 305097057

img_9d47844bc7e2fe4b7b0d2ddf608fce98.jpe

版权声明:
转载时请注明作者 Fundebug以及本文地址:**
https://blog.fundebug.com/2017/06/07/what-is-docker-volume/**

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/640992

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。