什么是dockervolume?(代码片段)

author author     2023-01-21     757

关键词:

摘要Docker Volume,通常翻译为数据卷,用于保存持久化数据。当我们将数据库例如MySQL运行在Docker容器中时,一般将数据通过Docker Volume保存在主机上,这样即使删除MySQL容器,数据依然保存在主机上,有效保证了数据的安全性。这篇博客将通过简单的实践帮助大家理解什么是Docker Volume
技术分享图片
本文所有命令都是在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.txt
ls /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.txt
docker exec test ls /tmp/data2/
hello.txt
world.txt

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

ls /tmp/data1/
hello.txt  world.txt

可知,在容器目录/tmp/data2/的修改,可以同步到主机目录/tmp/data1/中。

5. 结论

Docker Volume本质上是容器与主机之间共享的目录或者文件,这样Docker Volume中的数据可以在主机和容器中实时同步。使用Virtualbox创建虚拟机时,也可以配置共享目录,这与Docker Volume非常相似。

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了7亿+错误事件,得到了Google、360、金山软件、百姓网等众多知名用户的认可。欢迎免费试用!

技术分享图片

版权声明

转载时请注明作者Fundebug以及本文地址:

https://blog.fundebug.com/2017/06/07/what-is-docker-volume/

dockervolume(代码片段)

Docker的数据持久化主要有两种方式:bindmountvolumeDocker的数据持久化即使数据不随着container的结束而结束,数据存在于host机器上——要么存在于host的某个指定目录中(使用bindmount),要么使用docker自己管理的volume(/var/lib/do... 查看详情

dockervolume(代码片段)

Docker的数据持久化主要有两种方式:bindmountvolumeDocker的数据持久化即使数据不随着container的结束而结束,数据存在于host机器上——要么存在于host的某个指定目录中(使用bindmount),要么使用docker自己管理的volume(/var/lib/do... 查看详情

dockervolume(代码片段)

DockerVolumeDocker的文件系:Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载镜像层并在其上添加一个读写层.如果运行中的容器修改了现有的一个已存在的文件,那该文件将会从读写层下的只读层... 查看详情

dockervolume在mac上的目录(代码片段)

Dockervolume在mac上的目录在MacOS上,方便起见我们会直接安装dockerdesktop,但是这种情况下使用dockervolumeinspect查看到的Mountpoint实际不是我们macos的路径,而是docker运行的虚拟机上的路径。DRIVERVOLUMENAMElocal585de398fcf5cfa67314f3c... 查看详情

dockervolume在mac上的目录(代码片段)

Dockervolume在mac上的目录在MacOS上,方便起见我们会直接安装dockerdesktop,但是这种情况下使用dockervolumeinspect查看到的Mountpoint实际不是我们macos的路径,而是docker运行的虚拟机上的路径。DRIVERVOLUMENAMElocal585de398fcf5cfa67314f3c... 查看详情

dockervolume数据卷(代码片段)

@[TOC]DockerVolume数据卷简介推荐Docker官网数据管理悟尘记电子书-数据持久化存储与性能调优介绍挂载卷的方式-volume与--mount-v或–volume由三个字段组成,以冒号字符(:)分隔卷的名称(或本机目录):容器的目录:权限卷的名称,匿... 查看详情

dockervolume数据卷(代码片段)

@[TOC]DockerVolume数据卷简介推荐Docker官网数据管理悟尘记电子书-数据持久化存储与性能调优介绍挂载卷的方式-volume与--mount-v或–volume由三个字段组成,以冒号字符(:)分隔卷的名称(或本机目录):容器的目录:权限卷的名称,匿... 查看详情

wsl2中dockervolume的位置(代码片段)

...不存在,搜索了一些资料也不对,最后在WSL2whereisdockervolumelocation?找到了答案。按照nvRelax的回复,找到了该位置。第一步在windowsCMD中执行下面的命令&# 查看详情

005.docker存储管理(代码片段)

一 Dockervolume形态因为Docker采用AFUS分层文件系统时,文件系统的改动都是发生在最上面的容器层,在容器的生命周期内,它是持续的,包括容器在被停止后。但是,当容器被删除后,该数据层也随之被删除了。因此,Docker采用volu... 查看详情

dockerreview-使用dockervolume数据卷实现容器内的数据与宿主机同步(代码片段)

文章目录Predockervolume基本操作挂载一个主机目录作为数据卷Pre数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:数据卷可以在容器之间共享和重用对数据卷的修改会立马生效对... 查看详情

docker核心之数据卷(代码片段)

...实现具名映射和匿名映射具名映射匿名映射指定映射目录dockervolume命令容器与容器共享数据卷多个容器共享配置数据(案例)结论什么是数据卷映射docker可以将宿主机上的目录映射到容器中,映射到容器内部的目录自... 查看详情

docker核心之数据卷(代码片段)

...实现具名映射和匿名映射具名映射匿名映射指定映射目录dockervolume命令什么是数据卷映射docker可以将宿主机上的目录映射到容器中,映射到容器内部的目录自动与宿主机的目录实现同步;即外部目录里面的作出改动,... 查看详情

wsl2中dockervolume的位置(代码片段)

...不存在,搜索了一些资料也不对,最后在WSL2whereisdockervolumelocation?找到了答案。按照nvRelax的回复,找到了该位置。第一步在windowsCMD中执行下面的命令:netuseh:\\\\wsl$\\docker-desktop-data其中h:为盘符,需要使用一个... 查看详情

40-docker-管理卷(代码片段)

...习docker中管理卷管理卷卷出现的目的就是为了保存数据。dockervolume命令可以对Docker自己管理的卷(/var/lib/docker/volumes/xx)目录进行操作。查看支持的命令dockervolume--helpCommands:createCreateavolume创建卷in 查看详情

docker数据管理(代码片段)

一、数据卷Dockervolum 通常翻译为数据卷,用于保存持久化数据。当我们将数据库例如MySQL运行在Docker容器中时,一般将数据通过DockerVolume保存在主机上,这样即使删除MySQL容器,数据依然保存在主机上,有效保证了数据的安全... 查看详情

dockervolume创建使用备份使用nfs存储

docker存储volume#环境centos7.4,Dockerversion17.12.0-cedockervolume创建、使用、备份、使用nfs存储#dockervolume数据存容器内,删容器即销毁全部数据要保留的数据(数据持久化),需存储在容器外dockervolume是文件或目录,mount到docker容器中使用doc... 查看详情

005.docker存储管理(代码片段)

一Dockervolume形态因为Docker采用AFUS分层文件系统时,文件系统的改动都是发生在最上面的容器层,在容器的生命周期内,它是持续的,包括容器在被停止后。但是,当容器被删除后,该数据层也随之被删除了。因此,Docker采用volum... 查看详情

四docker实用篇_数据卷(代码片段)

...。1.2、数据集操作命令数据卷操作的基本语法如下:dockervolume[COMMAND]dockervolume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:create创建一个volumeinspect显示一个或多个volume的信息ls列出所有的volumeprune... 查看详情