当前位置: 首页 > news >正文

Docker容器数据卷

一、概念

1.定义

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

2.作用:

将运用与运行的环境打包镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是持久化的。
 Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。
为了能保存数据在docker中则使用卷。

3.特点:
  • 数据卷可在容器之间共享或重用数据
  • 卷中的更改可以直接实时生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

二、添加容器卷

运行一个带有容器卷存储功能的容器实例:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

Docker挂载主机目录访问如果出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个–privileged=true参数

1.宿主vs容器之间映射添加容器卷

容器操作:

hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run -it --privileged=true -v /Users/hongcaixia/Documents/host_data:/tmp/docker_data --name=my_centos centos
[root@c61d4745b6e8 /]# cd /tmp/docker_data
[root@c61d4745b6e8 docker_data]# ls
[root@c61d4745b6e8 docker_data]# touch docker.txt   
[root@c61d4745b6e8 docker_data]# ls
docker.txt
[root@c61d4745b6e8 docker_data]# ls -- 宿主机在该目录建立了host.txt
docker.txt  host.txt
[root@c61d4745b6e8 docker_data]# echo 'write in docker'>docker.txt
[root@c61d4745b6e8 docker_data]# cat docker.txt
write in docker
[root@c61d4745b6e8 docker_data]# cat docker.txt  -- 宿主机在该文件写入了write in host
write in docker
write in host
[root@c61d4745b6e8 docker_data]# 

主机操作:

hongcaixia@hongcaixiadeMacBook-Pro ~ % cd /Users/hongcaixia/Documents/host_data
hongcaixia@hongcaixiadeMacBook-Pro host_data % ls
docker.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data % touch host.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data % ls
docker.txt	host.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data % vi docker.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data % cat docker.txt
write in docker
write in host
hongcaixia@hongcaixiadeMacBook-Pro host_data % 

使用docker inspect 容器id 命令查看容器挂载信息:

hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
dd1b08d9fd2a   centos    "/bin/bash"   14 minutes ago   Up 14 minutes             docker_centos
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker inspect dd1b08d9fd2a
[
..."Mounts": [{"Type": "bind","Source": "/Users/hongcaixia/Documents/host_data","Destination": "/tmp/docker_data","Mode": "","RW": true,"Propagation": "rprivate"}],
...
]

如果容器停止了,主机在挂载目录修改内容,当容器启动之后依旧可以同步到信息:
容器操作:

hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
dd1b08d9fd2a   centos    "/bin/bash"   22 minutes ago   Up 22 minutes             docker_centos
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker stop dd1b08d9fd2a
dd1b08d9fd2a
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker start dd1b08d9fd2a
dd1b08d9fd2a
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
dd1b08d9fd2a   centos    "/bin/bash"   24 minutes ago   Up 2 seconds             docker_centos
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker exec -it dd1b08d9fd2a bash
[root@dd1b08d9fd2a /]# cd /tmp/docker_data/
[root@dd1b08d9fd2a docker_data]# ls
docker.txt  docker_in.txt  docker_in.txt~  docker_in.txz~  host.txt  host1.txt
[root@dd1b08d9fd2a docker_data]#

主机操作:在容器停止之后创建host1.txt:

hongcaixia@hongcaixiadeMacBook-Pro host_data % touch host1.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data % ls
docker.txt	docker_in.txt	docker_in.txt~	docker_in.txz~	host.txt	host1.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data % 
2.添加读写映射规则

默认是可读可写

设置只读限制:容器实例内部被限制,只能读取不能写
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

容器操作:

hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run -it --privileged=true -v /Users/hongcaixia/Documents/host_data2:/tmp/docker_data2:ro --name=hcx_centos2 centos
[root@f12971f08fb1 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@f12971f08fb1 /]# cd /tmp/docker_data2/
[root@f12971f08fb1 docker_data2]# ls -- 在主机中创建的文件
host.txt
[root@f12971f08fb1 docker_data2]# touch docker.txt
touch: cannot touch 'docker.txt': Read-only file system
[root@f12971f08fb1 docker_data2]# 

主机操作:

hongcaixia@hongcaixiadeMacBook-Pro Documents % cd host_data2 
hongcaixia@hongcaixiadeMacBook-Pro host_data2 % ls
hongcaixia@hongcaixiadeMacBook-Pro host_data2 % touch host.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data2 % ls
host.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data2 %

三、卷的继承和共享

docker run -it --privileged=true --volumes-from 父类 --name 容器名 镜像名

第一个容器my_centos3:

hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run -it --privileged=true -v /Users/hongcaixia/Documents/host_data3:/tmp/docker_data3 --name=my_centos3 centos
[root@1e7c088b1b4d /]# cd /tmp/docker_data3
[root@1e7c088b1b4d docker_data3]# ls
[root@1e7c088b1b4d docker_data3]# touch docker3.txt
[root@1e7c088b1b4d docker_data3]# ls
docker3.txt
[root@1e7c088b1b4d docker_data3]# ls
docker3.txt  docker4.txt
[root@1e7c088b1b4d docker_data3]# ls
docker3.txt  docker4.txt  host.txt
[root@1e7c088b1b4d docker_data3]#-- 停掉父容器,不影响子容器和主机的同步
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
671ef51c2961   centos    "/bin/bash"   6 minutes ago   Up 6 minutes             my_centos4
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker stop 671ef51c2961
671ef51c2961
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
hongcaixia@hongcaixiadeMacBook-Pro ~ % -- 父容器恢复,主机和子容器的操作可以同步过来
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker start 671ef51c2961
671ef51c2961
hongcaixia@hongcaixiadeMacBook-Pro ~ % docker exec -it 671ef51c2961 /bin/bash
[root@671ef51c2961 /]# cd /tmp/docker_data3/
[root@671ef51c2961 docker_data3]# ls
docker3.txt  docker4.txt  host.txt  host2.txt
[root@671ef51c2961 docker_data3]#

第二个容器my_centos4: 继承3的容器卷

hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run -it --privileged=true --volumes-from my_centos3 --name=my_centos4 centos 
[root@671ef51c2961 /]# cd /tmp/docker_data3
[root@671ef51c2961 docker_data3]# ls
docker3.txt
[root@671ef51c2961 docker_data3]# touch docker4.txt
[root@671ef51c2961 docker_data3]# ls
docker3.txt  docker4.txt  host.txt
[root@671ef51c2961 docker_data3]# -- 停掉父容器,不影响子容器和主机的同步
[root@671ef51c2961 docker_data3]# ls
docker3.txt  docker4.txt  host.txt  host2.txt
[root@671ef51c2961 docker_data3]# 

主机:

hongcaixia@hongcaixiadeMacBook-Pro Documents % cd host_data3
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % ls
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt	docker4.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % touch host.txt   
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt	docker4.txt	host.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % hongcaixia@hongcaixiadeMacBook-Pro host_data3 % touch host2.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt	docker4.txt	host.txt	host2.txt
hongcaixia@hongcaixiadeMacBook-Pro host_data3 % 

父容器stop,不会影响子容器和主机之间的同步

相关文章:

Docker容器数据卷

一、概念 1.定义 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。 卷的设计目的就是数据的持久化,完全独…...

chatGPT 国内版,嵌入midjourney AI创作工具

聊天GPT国内入口,免切网直达,可直接多语言对话,操作简单,无需复杂注册,智能高效,即刻使用.可以用作个人助理,学习助理,智能创作、新媒体文案创作、智能创作等各种应用场景! 地址: https://ai.wboat.cn/...

Yum仓库架构解析与搭建实践

1.Yum仓库搭建 1.1本地Yum仓库图解 1.2Linux本地仓库搭建 配置本地光盘镜像仓库 1)挂载 [roothadoop101 ~]# mount -t iso996 /dev/cdrom/mnt 2)查看 [rooothadoop101 ~] # df -h | |grep -i mnt /dev/sr0 4.6G 4.4G 3&#xf…...

ElementPlus中的分页逻辑与实现

ElementPlus中的分页逻辑与实现 分页是web开发中必不可少的组件,element团队提供了简洁美观的分页组件,配合table数据可以实现即插即用的分页效果。分页的实现可以分成两种,一是前端分页,二是后端分页。这两种分页分别适用于不同…...

实验01:静态路由配置实验

1.实验目的: 本次实验的主要目的是了解静态路由的配置和实现原理,熟悉路由器的基本操作,掌握在网络中进行静态路由配置的方法和技巧。 2.实验内容: 搭建网络拓扑,包括三台路由器和两台PC。配置路由器的IP地址和路由…...

C#中简单的继承和多态

今天我们来聊一聊继承,说实话今天也是我第一次接触。 继承的概念是什么呢?就是一个类可以继承另一个类的属性和方法(成员) 继承是面向对象编程中的一个非常重要的特性。 好了,废话不多说,下面切入正题&a…...

15、lambda表达式、右值引用、移动语义

前言 返回值后置 auto 函数名 (形参表) ->decltype(表达式) lambda表达式 lambda表达式的名称是一个表达式 (外观类似函数),但本质绝非如此 语法规则 [捕获表] (参数表) 选项 -> 返回类型 { 函数体; }lambda表达式的本质 lambda表达式本质其实是一个类…...

spring boot 实现直播聊天室(二)

spring boot 实现直播聊天室(二) 技术方案: spring bootnettyrabbitmq 目录结构 引入依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.96.Final</version> </dependency>Si…...

alibaba fastjson GET List传参 和 接收解析

之前一直都是 get传的都是单字符串&#xff08;例如 xxxxxxxxx?name{name};name“woaini”;&#xff09;&#xff0c;并没有传list的. GET List传参 问题场景 String url"xxxxxxxx?id{id}"; HashMap<String,Object> param new HashMap<>(); param.pu…...

API自动化测试是什么?我们该如何做API自动化测试呢?

API测试已经成为测试工作中的常规任务之一。为了提高测试效率并减少重复的手工操作&#xff0c;API自动化测试变得越来越重要。本文总结了API自动化测试方面的经验和心得&#xff0c;旨在与读者分享。 掌握自动化技能已经成为高级测试工程师的必备技能。敏捷和持续测试改变了传…...

PyTorch 的 10 条内部用法

欢迎阅读这份有关 PyTorch 原理的简明指南[1]。无论您是初学者还是有一定经验&#xff0c;了解这些原则都可以让您的旅程更加顺利。让我们开始吧&#xff01; 1. 张量&#xff1a;构建模块 PyTorch 中的张量是多维数组。它们与 NumPy 的 ndarray 类似&#xff0c;但可以在 GPU …...

Django、Echarts异步请求、动态更新

前端页面 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>echarts示例</title> <script src"jquery.min.js"></script><script type "text/javascript" src "echarts.m…...

Mac部署Odoo环境-Odoo本地环境部署

Odoo本地环境部署 安装Python安装Homebrew安装依赖brew install libxmlsec1 Python运行环境Pycharm示例配置 Mac部署Odoo环境-Odoo本地环境部署 安装Python 新机&#xff0c;若系统没有预装Python&#xff0c;则安装需要版本的Python 点击查询Python官网下载 安装Homebrew 一…...

【✅面试编程题:如何用队列实现一个栈】

✅面试编程题&#xff1a;如何用队列实现一个栈 &#x1f4a1;典型回答 &#x1f4a1;典型回答 使用两个队列可以实现一个栈&#xff0c;一个队列用来存储栈中的元素&#xff0c;另一个队列用来在pop操作时暂存元素。 上才艺&#xff1a; import java.util.LinkedList; impo…...

Windows本地的RabbitMQ服务怎么在Docker for Windows的容器中使用

1. 进入管理界面 windows安装过程请访问&#xff1a;Windows安装RabbitMQ、添加PHP的AMQP扩展 浏览器访问&#xff1a;http://127.0.0.1:15672/ 2. 创建虚拟主机 上面访问的是 RabbitMQ 的管理界面&#xff0c;可以在这个界面上进行一些操作&#xff0c;比如创建虚拟主机、…...

YOLOv5改进 | 2023卷积篇 | AKConv轻量级架构下的高效检测(既轻量又提点)

一、本文介绍 本文给大家带来的改进内容是AKConv是一种创新的变核卷积&#xff0c;它旨在解决标准卷积操作中的固有缺陷&#xff08;采样形状是固定的&#xff09;&#xff0c;AKConv的核心思想在于它为卷积核提供了任意数量的参数和任意采样形状&#xff0c;能够使用任意数量…...

微信小程序:模态框(弹窗)的实现

效果 wxml <!--新增&#xff08;点击按钮&#xff09;--> <image classimg src"{{add}}" bindtapadd_mode></image> <!-- 弹窗 --> <view class"modal" wx:if"{{showModal}}"><view class"modal-conten…...

uniapp交互反馈api的使用示例

官方文档链接&#xff1a;uni.showToast(OBJECT) | uni-app官网 1.uni.showToast({}) 显示消息提示框。 常用属性&#xff1a; title:页面提示的内容 image&#xff1a;改变提示框默认的icon图标 duration&#xff1a;提示框在页面显示多少秒才让它消失 添加了image属性后。 注…...

XUbuntu22.04之HDMI显示器设置竖屏(一百九十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

如何用 Cargo 管理 Rust 工程系列 甲

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/ceMTUzRjDoiLwjn_KfZSrg 这几年 Rust 可谓是炙手可热的新兴编程语言了&#xff0c;而且被投票为最受程序员喜爱的语言。它很现代&#xff0c;专门…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...