Docker Storage

文章目录

  • 存储持久化
  • 存储类型
    • Volumes
      • 使用场景
      • 管理Volume
      • 挂载Volume
      • 备份恢复Volume
    • Bind mounts
      • 使用场景
      • 挂载bind
    • tmpfs
      • 挂载tmpfs

存储持久化

在容器中所有创建的文件都是存储在容器可写层

  • 当容器不存在后数据不会持久化,并且如果另一个进程需要数据,很难将数据取出容器
  • 容器运行时可写层与宿主机是紧耦合的,无法移动数据到其他地方
  • 容器可写层需要存储驱动来管理文件系统,存储驱动使用linux 内核提供了一个联合文件系统,与使用直接写入主机文件系统的数据卷相比,这种额外的抽象降低了性能

为了持久化文件,docker为容器在宿主机存储数据提供了两个选择,volumes和bind mounts。
docker也支持容器存储文件在宿主机的内存,但文件不能持久化。如果运行docker在linux上,tmpfs mount将文件存储在宿主机的系统内存。如果运行docker在windows,pipe将文件存储在宿主机的系统内存。

存储类型

在这里插入图片描述

Volumes

Volumes:被存储在docker管理的宿主机文件系统的一部分(/var/lib/docker/volumes/),非docker进程不应该能修改这部分目录。在docker中,volumes是最好的持久化数据的方式。

Volumes:

  • 被docker创建和管理在宿主机文件系统的一部分(/var/lib/docker/volumes/)
  • 可以使用docker volume命令单独创建,也可以在创建容器和服务时创建。volume被创建后,被存储在宿主机的一个目录。当挂载volume到容器时,该目录也会挂载到容器。这和bind mount的工作方式是相似的,除了volumes是被docker管理。
  • 一个volume可以同时被挂载到多个容器。
  • 没有运行的容器使用时,volume不会被删除,仍然可用。可以通过docker volume prune命令手动删除未使用的volume。
  • 挂载volume时,可以是命名的和匿名的,匿名的volume被第一次挂载时,docker会生成一个随机的命令来保证它在宿主机上是唯一的。volumes也支持使用volume drivers来存储数据到远程机器或者云上。

使用场景

1.在多个运行的容器中分享数据。容器停止或删除时,volume仍然存在,除非手动删除volume。
2.当宿主机不能保证给定的目录和文件结构,volumes将宿主机的配置与容器运行时解耦合。
3.当想要存储容器数据到远程主机或云上时。
4.当需要将数据从一个宿主机备份、恢复或迁移到另一台。

相比bind mount好处:
volumes可以更简单的备份和迁移数据
可以使用Docker CLI命令和Docker API来管理
在多个容器之间使用更安全
可以使用volumes drivers存储数据到远程主机和云上

管理Volume

#创建volume
docker volume create my-vol
#查看volume
docker volume ls
#查看volume信息
docker volume inspect my-vol
[{"Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/my-vol/_data","Name": "my-vol","Options": {},"Scope": "local"}
]
#删除volume
docker volume rm my-vol

挂载Volume

# --mount 多个key-value对,以逗号分隔 
# 类型{type=(bind、volume、tmpfs)},名字{(source,src)=},挂载的容器路径{(dst、target)=},权限(可选,例如read-only),volume-opt(可选,指定多个配置)docker run -d \--name devtest \--mount source=myvol2,target=/app \nginx:latest# -v 三个参数以:分隔  volume的名字:挂载的容器路径:权限(可选,例如ro)docker run -d \--name devtest \-v myvol2:/app \nginx:latest

备份恢复Volume

#创建容器
docker run -d -v test:/nginx_backup --name test_store nginx 
#备份 启动一个新的容器 使用tar命令备份test_store容器的volume数据到本地/root
docker run --rm --volumes-from test_store -v /root:/backup nginx tar cvf /backup/backup.tar /nginx_backup
#恢复 启动一个新的容器 解压本地/root目录的备份文件 恢复到volume
docker run --rm --volumes-from test_store -v /root:/backup nginx bash -c "cd /nginx_backup && tar xvf /backup/backup.tar --strip 1"

Bind mounts

Bind mounts:可以存储在宿主机的任何地方。它们甚至可能是重要的系统文件或目录。Docker主机或Docker容器上的非Docker进程可以随时修改它们。

使用场景

  1. 分享宿主机配置文件到容器。例如,dns解析配置文件/etc/resolv.conf
  2. 在Docker主机和容器上的开发环境之间共享源代码或构建工件。例如,您可以将Maven目标/目录挂载到容器中,并且每次在Docker主机上构建Maven项目时,容器都可以访问重新构建的工件。如果您以这种方式使用Docker进行开发,那么您的生产Dockerfile将直接将生产就绪的工件复制到映像中,而不是依赖于绑定挂载。
  3. 当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时。

Bind mounts:docker早期的使用方式。相比较volumes功能有限。当使用bind mount,宿主机上的文件和目录会被挂载到容器。在宿主机上文件和目录通过全路径名来引用。文件和目录可以不存在,如果不存在会按需创建。bind mounts性能很好,但是它依赖于宿主机特定目录结构的文件系统。不能使用dockr cli命令直接管理bind mounts。使用bind mounts,可以通过容器中运行的进程来更改主机文件系统,可能会影响到宿主机的其他进程,会有安全隐患。

挂载bind

# --mount 多个key-value对,以逗号分隔 
# 类型{type=(bind、volume、tmpfs)},宿主机路径{(source,src)=},挂载的容器路径{(dst、target)=},权限(可选,例如read-only),bind-propagation(可选,指定多个配置)docker run -d \-it \--name devtest \--mount type=bind,source="$(pwd)"/target,target=/app \nginx:latest# -v 三个参数以:分隔  宿主机路径:挂载的容器路径:(可选,逗号分隔的多个选项)docker run -d \-it \--name devtest \-v "$(pwd)"/target:/app \nginx:latest

tmpfs

tmpfs mounts:

  • 仅仅存储在宿主机的系统内存中,不会持久化存储到宿主机的文件系统。
  • 在容器的生命周期内,可以用来存储非持久化的数据和敏感信息。例如,swarm service使用tmpfs mount来挂载secrets到服务容器。

挂载tmpfs

# --mount 多个key-value对,以逗号分隔 
# 类型{type=(bind、volume、tmpfs)},挂载的容器路径{(dst、target)=},大小限制,可选,单位比特,默认无限制{(tmpfs-size)=},文件模式,可选{(tmpfs-mode)=}docker run -d \-it \--name tmptest \--mount type=tmpfs,destination=/app \nginx:latestdocker run -d \-it \--name tmptest \--tmpfs /app \nginx:latest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 Amazon 搭建无代码可视化的数据分析和建模平台

现代企业常常会有利用数据分析和机器学习帮助解决业务痛点的需求。如制造业中,利用设备采集上来的数据做预测性维护,质量控制;在零售业中,利用客户端端采集的数据做渠道转化率分析,个性化推荐等。 亚马逊云科技开发者…

HTML5

写在前面 一、简单认识HTML 1.1 什么是网页【2023/08/31】 网站是指因特网上根据一定的规则,使用HTML等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是HTML格式的文件,它要通过浏览器来阅读。 网页是构成网站的…

【微服务】服务发现和管理技术框架选型调研

选型背景 方案对比 结论 结合实际业务和开发需要,着重考虑性能可靠性、功能和社区支持程度三方面,认为Nacos更适合作为服务发现和管理的技术框架。具体理由如下: 性能更好,可靠性更高 经过阿里、APISIX、SpringCloudAlibaba,阿…

华为数通方向HCIP-DataCom H12-821题库(单选题:201-220)

第201题 BGP 协议用​​ beer default-route-advertise​​ 命令来给邻居发布缺省路由,那么以下关于本地 BGP 路由表变化的描述,正确的是哪一项? A、在本地 BGP 路由表中生成一条活跃的缺省路由并下发给路由表 B、在本地 BGP 路由表中生成一条不活跃的缺省路由&…

基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作

文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体,注重量化的综合性知识体系。特别是,信息可视化技术手段和方法的运用,可直观的展示主题的研究发展历程、研究现状、研究…

vr健康管理服务情景化教学弥补现代医学教学中的诸多不足之处

高职高专临床医学院校以培养岗位胜任力为目的,该专业是一门专业性、实践性较强的医学学科,要求培养出来的学生具有较强的临床实践能力,医学生所学的全部知识,都应与实践相结合,解决临床的实际问题,为患者解…

ArrayList、LinkedList、Collections.singletonList、Arrays.asList与ImmutableList.of

文章目录 ListArrayListLinkedListArrayList与LinkedList的区别快速构建list集合Collections.singletonListArrays.asListImmutableList.of Java集合类型有三种:set(集)、list(列表)和map(映射),而List集合是很常用的一种集合类型, List 我…

2023年MySQL-8.0.34保姆级安装教程

重点放前面:演示环境为windows环境。 MySQL社区版本安装教程如下: 一、MySQL安装包下载二、安装配置设置三、配置环境变量 大体分为3个步骤:①安装包的下载;②安装配置设置;③配置环境变量 一、MySQL安装包下载 下载官…

架构设计基础设施保障IaaS存储

目录 1. 云硬盘2. 对象存储3. 表单上传案例4. 服务上传验证5. 云数据库6. 云数据库操作7. 服务连接云数据库8. 新一代原生数据库9 阿里云PolarDB生产最佳实践 1. 云硬盘 HDD(普通云盘) 特征: 性能一般, IOPS大概在数百左右。 应…

江苏移动基于OceanBase稳步创新推进核心数据库分布式升级

*本文首发自《中国电信业》 数字经济时代,数据库作为企业核心数据存储、处理、挖潜等方面的关键载体,重要性日益凸显。对于运营商而言,数据库具有行业用户数量多、访问数量多、业务复杂度高、数据安全性高、响应要求性高以及需要 7*24 小时服…

illegal cyclic inheritance involving trait Iterable_2种解决方式

一、报错内容 /Users/liyangda/Code/DemoProject/demo-scala/src/scala/old04/T4.scala:11:20 illegal cyclic inheritance involving trait Iterableval value List(1, 2, 3, 4, 5, 6, 7, 8)二、问题解决 1、方式一:降低scala版本 可以选择降低Scala的版本&…

【三等奖方案】小样本数据分类任务赛题「复兴15号」团队解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束。大赛官方竞赛平台DataFountain(简称DF平台)将陆续释出各赛题获奖队伍的方案思路。 本方案为【小样本数据分类任务】赛题的三等奖获奖方案,赛题地址&#xff…

直接插入排序与希尔排序

目录 一,排序的概念 二,插入排序 2.1直接插入排序 2.2 希尔排序 一,排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些或某些关键字的大小,递增或递减的排列 稳定性&#xff…

hadoop-HDFS

1.HDFS简介 2.1 Hadoop分布式文件系统-HDFS架构 2.2 HDFS组成角色及其功能 (1)Client:客户端 (2)NameNode (NN):元数据节点 管理文件系统的Namespace元数据 一个HDFS集群只有一个Active的NN &#xff…

监控平台 - zabbix

目录 一、概述 二、搭建 一、概述 1. zabbix程序结构 zabbix-server:用于数据处理及写入到数据库 zabbix-agent:用于获取被监控端的性能检测数据 zabbix-web:用于数据的展示及远程操控 数据库:用于存储监控数据 zabbix-pr…

Windows无法删除分区怎么办?

我们知道Windows系统内置的磁盘管理工具是一个很实用的程序,可以帮助我们完成很多磁盘分区相关的基础操作,比如当我们想要删除硬盘上的某一个分区时,先想到的可能会是磁盘管理工具。但是当我们准备在磁盘管理工具中删除某个分区时&#xff0c…

向openssl中添加一个最简单的算法

文章目录 一、尝试在sha.c中添加新的函数二、添加自定义算法2.1 添加对应文件2.2 相关配置2.3 编译运行 一、尝试在sha.c中添加新的函数 在尝试添加新算法前,我先尝试在原有的旧算法中添加一个新函数,看是否能被编译并生成对应的动态链接库。 关于open…

技术科普:汽车开放系统架构AUTOSAR

01.AUTOSAR简介 汽车是现代人类实现“千里江陵一日还”的交通工具,而计算机则是使人脱离繁杂重复脑力劳动的生产技术,两者的结合催生了汽车电子产业的蓬勃发展。 21世纪初,随着汽车电子应用需求的不断增多与硬件资源不断丰富,软…

Multimedia-播放器-架构2

目录 引言 问题1: 数据缓冲区 多线程模型 缓冲区的特点: 点播和直播场景中的缓冲区: 问题2: 同步方式 同步实现过程 引言 上一篇梳理了播放器的基本工作与处理流程,本片内容主要梳理一下其中会遇到的问题&am…

如何高性能、高效率地实现3D Web轻量化?

随着互联网和Web技术的发展,3D Web应用的需求越来越多。然而,复杂的3D模型在Web上展示 和交互通常需要大量的带宽和计算资源。 为了解决这一问题,HOOPS技术作为一套专业的3D图形技术开发工具包,发挥着关键作用。本文 将探讨HOO…