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.验证容器和宿主机之间数据共享 通过上面的操作,接下来我们演示一下通过数据卷的挂载,实 ...
随机推荐
- PHP7.4之编译安装
虽然之前写过很多编译安装PHP的文章, 但是隔段时间还是会重新安装一些PHP的版本,再次记录一下 1. 下载安装编译工具 yum groupinstall 'Development Tools' 2. ...
- 使用mvn 将 pom文件推送到私服
1.业务场景 现在我有一个 *.pom文件 需要上传到私服. 比如 spring-cloud-dependencies-2021.0.9.pom 这个时候可以使用命令将这个文件传到私服. 2.上传脚本 ...
- 『玩转Streamlit』--表单Form
在Streamlit中,Form组件是一种特殊的UI元素,允许用户输入数据而不立即触发应用的重新运行. 这对于创建需要用户输入多个参数后再进行处理的交互式表单非常有用. 1. 概要 Form组件的主要 ...
- 使用 SemanticKernel 对接 Ollma
前面的 2 篇文章已经介绍了 ollama 的基本情况.我们也已经能在本地跟 LLM 进行聊天了.但是如何使用代码跟 LLM 进行交互呢?如果是 C# 选手那自然是使用 SK (SemanticKer ...
- Alain 配置管理
app/assets/tmp/app-data.json 中保存了默认的一些应用配置 app 应用配置 user 默认用户配置 menu 菜单配置信息 在 App.Module 中,使用 APP_IN ...
- 知乎 微软当年的 J++ 究竟是什么?为什么 Sun 要告它? zz
https://www.zhihu.com/question/22814456 考个古
- Linux 中的内存使用率计算方式
背景介绍 在工作中处理问题的时候,遇到一个问题,自己根据 top 命令时查看到的 used 和 total 计算出来的内存使用率已经达到 90% 以上了,但是系统自带的监控软件计算出来的使用率往往没有 ...
- Qt/C++音视频开发55-加密保存到文件并解密播放
一.前言 为了保证视频文件的安全性,有时候需要对保存的视频文件加密,然后播放的时候解密出来再播放,只有加密解密的秘钥一致时才能正常播放,用ffmpeg做视频文件的加密保存和解密播放比较简单,基于ffm ...
- Ubuntu 20.04编译opencv-3.1.0时报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope
Ubuntu 20.04源码编译安装opencv320 报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope的解决办法 ...
- 开源即时通讯IM框架MobileIMSDK的鸿蒙NEXT端开发快速入门
相关链接: ① MobileIMSDK-鸿蒙端的详细介绍 ② MobileIMSDK-鸿蒙端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对鸿蒙Next和ArkTS开发有所了解: 1 ...





