什么是Docker Volume?

简介: 摘要:Docker Volume,通常翻译为数据卷,用于保存持久化数据。当我们将数据库例如MySQL运行在Docker容器中时,一般将数据通过Docker Volume保存在主机上,这样即使删除MySQL容器,数据依然保存在主机上,有效保证了数据的安全性。

摘要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/**

目录
相关文章
|
关系型数据库 MySQL 数据库
Docker容器数据持久化之Data Volume(数据卷)与容器数据共享(1)
Docker容器数据持久化之Data Volume(数据卷)与容器数据共享(1)
187 0
|
存储 Linux Docker
Docker NFS volume 创建与使用
Docker NFS volume 创建与使用
Docker NFS volume 创建与使用
|
2月前
|
存储 应用服务中间件 nginx
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
|
4月前
|
存储 Linux Go
Docker Volume - 目录挂载以及文件共享
Docker Volume - 目录挂载以及文件共享
115 0
|
存储 Devops Docker
【DevOps系列】Docker数据卷(volume)详解
【DevOps系列】Docker数据卷(volume)详解
202 0
|
7月前
|
JavaScript 关系型数据库 MySQL
一文详解Docker数据卷(volume)
一文详解Docker数据卷(volume)
|
存储 安全 Linux
Dockerfile 中的 volume 与 docker run -v 的区别
Dockerfile 中的 volume 与 docker run -v 的区别
1856 0
|
iOS开发 Docker MacOS
macOS Docker Volume数据卷存放的位置
macOS Docker Volume数据卷存放的位置
749 0
|
Linux Docker 容器
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
267 0
|
存储 Linux 应用服务中间件
Docker Volume 看这一篇就够了
Docker Volume 看这一篇就够了
Docker Volume 看这一篇就够了
下一篇
DataWorks