7. Docker 容器数据卷的使用(超详细的讲解说明)
7. Docker 容器数据卷的使用(超详细的讲解说明)
@
坑:容器卷(一定一定)记得加入 --privileged=true
Docker挂载主机目录访问如果出现 cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个 --privileged=true 参数即可。
如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

1. Docker容器数据卷概述
Docker 容器数据卷是什么:
一句话:有点类似我们 Redis 里面的
rdb和aof文件。将 docker 容器内的数据保存进宿主机的磁盘中,这样每次启动的容器实例当中的数据,都是从宿主主机(或者是另外的一个服务器存储数据的)当中读取的数据都还在,并不会因为容器实例删除了,数据而消失了。
运行一个带有容器卷存储功能的容器实例 ——>
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
Docker 容器数据卷能做什么:?
将运用与运行环境打包镜像, run 后形成容器实例运行,但是我们对数据的要求希望是:持久化的 。
Docker 容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。
为了能保存数据在 Docker 中我们使用卷。
特点:
- 数据卷可在容器之间共享或重用数据。
- 卷中的更改可以直接实时生效。
- 数据卷中的更改不会包含在镜像的更新中。
- 数据卷的生命周期一直持续到没有容器使用它为止。
2. Docker 容器数据卷的使用演示:
2.1 宿主 和 容器之间映射添加容器卷
命令 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
公式:docker run -it -v /宿主机目录:/容器内目录 ubuntu /bin/bash
docker run -it --name myu3 --privileged=true -v /home/linux/demo02/tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash
- 特别说明:--name 表示配置该容器实例的名称。


查看数据卷是否挂载成功:
docker inspect 容器ID
[root@localhost ~]# docker inspect 68a414008829

容器和宿主机之间数据共享:
- docker修改,主机同步获得
- 主机修改,docker同步获得
- docker容器 stop,主机修改,docker容器重启看数据是否同步。
2.2 容器数据卷 读写规则映射添加说明

默认配置的(没有特别说明的容器数据卷),默认就是可读可写(rw) 的。
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
只读配置:生成配置容器数据卷的时候 ,ro
只读:容器实例内部被限制,只能读取不能写。

这种场景,一般不常用,都是因为你要存数据,都是从容器实例当中的数据,写入到主机(或者其他的存储器服务器)当中进行一个备份。防止容器实例关闭了,数据丢失掉了。
2.3 容器数据卷的继承和共享
- 容器1完成和宿主机的映射:
docker run -it --privileged=true -v /mydocker/u:/tmp --name u1 ubuntu

- 创建容器实例 u2 并继承容器 u1的卷规则
公式如下:
docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu

u2 就继承 u1 容器实例的所有内容,比如:容器数据卷的路径,以及当中的内容数据。



3. 最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”
7. Docker 容器数据卷的使用(超详细的讲解说明)的更多相关文章
- 『现学现忘』Docker基础 — 28、Docker容器数据卷介绍
目录 1.什么是Docker容器数据卷 2.数据卷的作用 3.数据卷的使用 1.什么是Docker容器数据卷 Docker容器数据卷,即Docker Volume(卷). 当Docker容器运行的时候 ...
- 一篇文章教你实战Docker容器数据卷
在上一篇中,咱们对Docker中的容器数据卷做了介绍.已经知道了容器数据卷是什么?能干什么用.那么本篇咱们就来实战容器数据卷,Docker容器数据卷案例主要做以下三个案例 1:宿主机(也就是Docke ...
- docker 12 docker容器数据卷
数据卷概念 ♣我们知道,当我们把一个运行中的容器关闭后,容器里的数据就没有了(如果你做了docker commit操作,数据会保留到新的镜像里面).所以我们就需要用容器数据卷把容器数据进行持久化储存. ...
- Docker容器数据卷
⒈Docker容器中数据如何持久化? ①通过commit命令使容器反向为镜像 ②以容器数据卷的方式将数据抽离 ⒉容器数据卷的作用? ①容器数据的持久化 ②容器间继承.共享数据 ⒊能干嘛? 卷就是目录或 ...
- Docker容器数据卷(七)
Docker致力于: 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker co ...
- 5、docker容器数据卷: -v添加共享传递容器数据卷
1.是什么 1.docker理念 先来看看Docker的理念:* 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的* 容器之间希望有可能共享数据 2.保 ...
- Docker 容器数据卷(Data Volume)与数据管理
卷(Volume)是容器中的一个数据挂载点,卷可以绕过联合文件系统,从而为Docker 提供持久数据,所提供的数据还可以在宿主机-容器或多个容器之间共享.通过卷,我们可以可以使修改数据直接生效,而不必 ...
- Docker容器数据卷-Volume详解
Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume).数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享.数据 ...
- docker学习笔记-04:docker容器数据卷
一.容器数据卷是什么 1.为了保存docker容器运行时产生的数据,做数据的持久化,我们需要用到容器数据卷.因为如果不通过docker commit 生成新的镜像,那么当容器被删除时,数据自然就没有了 ...
- 『现学现忘』Docker基础 — 29、Docker容器数据卷的应用
目录 1.验证容器和宿主机之间数据共享 2.容器停止退出后,主机修改后数据是否同步 3.带只读权限的挂载数据卷 1.验证容器和宿主机之间数据共享 通过上面的操作,接下来我们演示一下通过数据卷的挂载,实 ...
随机推荐
- Prometheus之系统安装,启动
Prometheus简介Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包. 自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人 ...
- Educational Codeforces Round 77 (Rated for Div2)
B - Obtain Two Zeroes 给定两个整数\(a,b\),你可以执行以下操作任意次:每次操作选择一个正整数\(x\),使得\(a:=a-x,b:=b-2x\)或者\(a:=a-2x,b: ...
- 【漏洞分析】Vestra DAO 攻击事件:这个质押项目它取款不核销呀
背景信息 攻击交易:https://app.blocksec.com/explorer/tx/eth/0x9a1d02a7cb9fef11fcec2727b1f9e0b01bc6bcf5542f5b6 ...
- TokenService
https://github.com/ng-alain/delon/blob/master/packages/auth/src/token/token.service.ts set(data: ITo ...
- 使用 ayncio 实现 CountDownLatch
class CountDownLatch(object): def __init__(self, count=1): self.count = count self.lock = asyncio.Lo ...
- 【数据库】MySQL概念性基础知识期末复习
选择题 第一章 3 二维表结构--数据模型--关系数据模型 5 描述全部数据整体逻辑结构--模式 6 逻辑数据独立性--模式变,外模式和应用程序不变 7 物理数据独立性--内模式变,外模式和应用程序不 ...
- Kubernetes 服务发现 监控Endpoints
监控 Pod之前的apiserver 实际上就是一种特殊的 Endpoints,现在我们同样来配置一个任务用来专门发现普通类型的 Endpoint,其实就是 Service 关联的 Pod 列表,由于 ...
- Ubuntu下安装和开启telnet
安装命令如下 sudo apt-get install openbsd-inetd sudo apt-get install telnetd sudo /etc/init.d/openbsd-in ...
- Qt开发经验小技巧176-180
QCamera中获取设备的配置参数比如支持的分辨率集合等,需要先调用load后才能正确获取,或者关联stateChanged信号中判断状态是否是ActiveState,然后再读取. //方法1:调用l ...
- Qt编写项目作品26-一维码二维码解析及生成
一.功能特点 支持本地USB摄像头实时解析. 支持网络视频流实时解析. 解码格式支持一维码二维码等各种编码. 可生成一维码二维码,一维码支持EAN_13格式,其他格式可定制. 条形码参数支持宽度.高度 ...





