关键词:
文章目录
容器数据卷?是什么
但凡是数据,都逃不开一个最基本的问题:数据丢了怎么办?
所以就衍生出各种备份方案。
Docker 也是如此,你就不怕哪天容器让人给删了吗?
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
如何挂载容器卷
其实这篇内容很简单,就讲一下什么是容器卷,以及怎么挂载,再演示一下就完了。
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
演示一:数据恢复
演示步骤:
1、启动 Ubuntu 容器
2、在启动时挂载容器卷
3、创建一个文件
4、关闭容器
5、删除容器
6、重新并启动容器并挂载容器卷
7、检查文件是否还存在
我对几条重要命令解释一下:
docker run -it --name myu --privileged=true -v /tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash
这里我给它起了个名字,不起也可以,但是想到我自己都有名字,它没名字怪可怜的。
–privileged=true:Docker挂载主机目录访问。如果出现cannot open directory .: Permission denied,那就加上这个参数。
/tmp/myHostData:/tmp/myDockerData:在容器内 /tmp/myDockerData 目录下的所有文件及时同步到 宿主机内的 /tmp/myHostData 目录下,这两个路径可以是本不存在的,会自动创建。
可以看到,在我删除了原 myu 实例之后在启动容器,连目录都丢了,何况目录下的文件。
可以挂载多个目录,每次挂载都来个 -v 就好,下一章会看到。
演示二:宿主机数据传入容器
熟悉吗?我们以前使用 VMware 的时候,也都有从宿主机上传文件进 VMware 上的系统吧。
演示步骤:
1、确定容器未启动
2、在宿主机的挂载路径下新建文件
3、启动容器并挂载
4、查看文件是否出现在容器中
敲错命令了。。。mkdir 是创建目录。。。
演示步骤:
1、确定容器已启动
2、在宿主机的挂载路径下新建文件
3、查看文件是否出现在容器中
由此可见,这个容器卷可不仅仅是一个数据持久化的工具哦,它是可以双向通信的。
有个事儿忘了说,挂在之后一定要确定一下是否挂载上了,有个命令:
docker inspect 容器ID/容器名
看到有如下:
当然,我个人更喜欢直接再挂载路径下新建一个小文件,看它有没有通就知道了。
读写规则
容器卷也是可以设置读写规则的。默认是读写全开。
docker run -it --name myu --privileged=true -v /tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash
等同于
docker run -it --name myu --privileged=true -v /tmp/myHostData:/tmp/myDockerData:rw ubuntu /bin/bash
如果这样写,就是只读权限:
docker run -it --name myu --privileged=true -v /tmp/myHostData:/tmp/myDockerData:ro ubuntu /bin/bash
只读权限下,容器只能从数据卷中读取数据,而不能将数据同步至数据卷中。
那有没有只写?很可惜,莫得。。。
卷的继承和共享
一个容器启动时,可以继承另一个容器的卷规则。
你可能会觉得,就那么几个字符都不愿意去 cv 一下嘛,还要去别的容器那边去继承来。
看似有点鸡肋,但是存在即合理不是吗?
毕竟我们现在容器卷就一个,看着简单,到下一篇我们把集群放上容器的时候你再看哈哈。
命令也很简单:
容器一完成和宿主机间的映射:
docker run -it --privileged=true -v /mydocker/u:/tmp --name u1 ubuntu
容器二继承容器一和宿主机间的映射:
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu
呐,就这么简单我就不再多解释了吧。
这时候如果有眼尖的人很快就会想到,那如果容器一挂了呢?容器二和宿主机之间还能正常通信么?
可以自己玩玩试试。
详解docker——你需要知道的docker进阶知识三
...文件,我们不应该将其保存在镜像或者容器的可写层中。Docker提供三种不同的方式将数据从Docker主机挂载到容器中,分别为卷(volumes),绑定挂载(bindmounts),临时文件系统(tmpfs)。很多时候,volumes总是正确的选择。无论使... 查看详情
docker进阶——数据管理与网络(代码片段)
用户在使用Docker的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理(1)DataVolume(数据卷)(2)DataVolumeDontainers---... 查看详情
docker从入门到实践系列四-docker容器编排利器dockercompose(代码片段)
文章目录Compose简介概念组成安装与卸载二进制包方式安装测试卸载docker-compose.yml文件详解概念案例versionservicesimagebuildcontextdockerfilecontainer_namedepends_onportsexposerestartenvironmentenv_filecommandvolumesnetwork_modenetworksali 查看详情
如何在 Docker 中将卷从容器挂载到主机?
】如何在Docker中将卷从容器挂载到主机?【英文标题】:HowtomountvolumefromcontainertohostinDocker?【发布时间】:2021-01-1319:55:01【问题描述】:我对Docker中的整个数据卷过程有疑问。基本上这里有两个Dockerfile和它们各自的运行命令:Doc... 查看详情
docker进阶篇(代码片段)
查看docker教学视频,请点击《狂神说java》:https://www.bilibili.com/video/BV1og4y1q7M4?p=1记得投币三连呀~~容器数据卷什么是容器数据卷docker的理念回顾将应用和环境打包成一个镜像!数据?如果数据都在容器中,那么我们容器删除,数据... 查看详情
docker从入门到实践系列四-docker容器编排利器dockercompose(代码片段)
...ompose简介概念组成安装与卸载二进制包方式安装测试卸载docker-compose.yml文件详解概念案例versionservicesimagebuildcontextdockerfilecontainer_namedepends_onportsexposerestartenvironmentenv_filecommandvolumesnetwork_modenetworksaliasesvolumesnetworksCompose常用命令helpc... 查看详情
轻松学透docker数据卷(代码片段)
...二、数据卷管理命令增删查实例三、数据卷挂载mysql四、Dockerfile创建镜像并挂载数据卷学习一点通docker数据卷:类似于Linux的一种卷,挂载到目录,实现容器内数据备份、配置修改。特点:数据卷可以在容器之间... 查看详情
docker12docker容器数据卷
...行中的容器关闭后,容器里的数据就没有了(如果你做了dockercommit操作,数据会保留到新的镜像里面)。所以我们就需要用容器数据卷把容器数据进行持久化储存。♣还有一种情况,就是希望容器之间能共享数据,这时也需... 查看详情
docker数据管理(数据卷容器/镜像创建)(代码片段)
Docker数据管理一.数据卷二.数据卷容器三.端口映射四.容器互联(使用centos镜像)五.Docker镜像创建1.基于现有镜像创建2.基于本地模板创建3.基于Dockerfile创建六.Docker案例管理Docker容器中数据主要有两种方式:数据卷ÿ... 查看详情
docker数据管理(数据卷容器/镜像创建)(代码片段)
Docker数据管理一.数据卷二.数据卷容器三.端口映射四.容器互联(使用centos镜像)五.Docker镜像创建1.基于现有镜像创建2.基于本地模板创建3.基于Dockerfile创建六.Docker案例管理Docker容器中数据主要有两种方式:数据卷ÿ... 查看详情
docker学习总结(68)——docker数据卷相关知识总结
前言在生产环境中使用Docker,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束)或者需要在多个容器之间进行数据共享,需要将数据从宿主机挂载到容器中,这就会涉及容器的数据管理操作。Doc... 查看详情
docker学习第三天(docker数据卷管理)(代码片段)
1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中。目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中:1.volumes:... 查看详情
docker中的数据卷(代码片段)
Docker中的数据卷一、将Docker数据挂载到容器二、Volume的基本使用1、管理卷2、创建使用指定卷的容器3、清理卷二、BindMounts的基本使用1、使用卷创建一个容器2、验证绑定挂载消息3、清理容器应用场景总结一、将Docker数据挂载到... 查看详情
docker备份恢复迁移数据卷
...从本地主机挂载当前到容器的/backup目录。命令如下:$sudodockerrun--volumes-fromdbdata-v$(pwd):/backupubuntutarcvf/backup/backup.tar/dbdata容器启动后,使用了tar命令来将 查看详情
docker数据管理
一、什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式:数据卷:容器内数据之间映射到本地... 查看详情
docker------docker数据管理与dockerfile镜像创建(代码片段)
目录一.Docker的数据管理1.数据卷2.数据卷容器二.容器互联(使用centos镜像)三.Docker镜像的创建1.基于现有镜像创建2.基于本地模板创建3.基于Dockerfile创建①联合文件系统(UnionFS)②镜像加载原理③Docker里的centos的大小才200M的原因4.基... 查看详情
docker容器数据卷(代码片段)
...数据的要求希望是持久化的容器之间希望有可能共享数据Docker容器产生的数据,如果不通过dockercommit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们... 查看详情
docker从入门到实战应用(代码片段)
...作-容器第4章容器的修改及保存第5章容器进阶操作第6章Dockerfile第1章概念什么是沙箱机制#1、沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响。#2、沙箱具有非常... 查看详情