Docker 存储

news2024/9/21 16:19:54

Docker 存储

  • docker 默认存储方式
  • docker 持久化存储
    • Volumes (卷)
      • 简介
      • 推荐使用情况
    • Bind mounts (绑定挂载)
      • 简介
      • 推荐使用情况
    • 绑定挂载与卷注意点
  • docker 非持久化存储
    • tmpfs mounts (tmpfs 挂载)
      • 简介
      • 推荐使用情况
  • named pipes (命名管道)


docker 默认存储方式

默认情况下,在容器内创建的所有文件都存储在可写的容器层上。这意味着:当容器不存在时,数据不会持久存在,如果另一个进程需要数据,则很难将数据从容器中取出。容器的可写层与运行容器的主机紧密耦合。不能轻易地将数据移动到其他地方。


在这里插入图片描述


docker 持久化存储

Volumes (卷)

简介

  • 由 Docker 创建和管理,是主机文件系统的一部分中(在Linux上为 /var/lib/doker/Volumes/)。 非Docker进程不应该修改文件系统的这一部分。卷是在Docker中持久化数据的最佳方式。
  • 可以使用docker volume create命令显式创建卷,也可以在创建容器或服务时创建卷。
  • 创建卷时,它存储在Docker主机上的一个目录中。当将卷装入容器时,这个目录就是装入容器的目录。这与绑定装载的工作方式类似,只是卷由Docker管理,并且与主机的核心功能隔离。
  • 当没有正在运行的容器使用卷时,Docker仍然可以使用该卷,并且不会自动删除。可以使用docker volume prune删除未使用的卷。
  • 挂载卷时,它可以是命名的,也可以是匿名的。当匿名卷首次装入容器时,不会为其指定明确的名称,Docker会为其提供一个随机名称,该名称保证在给定的Docker主机中是唯一的。除了名称之外,命名卷和匿名卷的行为方式相同。
  • 卷还支持使用卷驱动程序,允许将数据存储在远程主机或云提供商上。

推荐使用情况

  • 在多个正在运行的容器之间共享数据。 多个容器可以同时装载同一个卷,可以是读写的,也可以是只读的。只有当明确删除卷时,才会删除这些卷。
  • 当Docker主机不能保证具有给定的目录或文件结构时。 卷可以帮助将Docker主机的配置与容器运行时解耦。
  • 当希望将容器的数据存储在远程主机或云提供商上,而不是本地时。
  • 当需要将数据从一个Docker主机备份、恢复或迁移到另一个主机时。 可以停止使用卷的容器,然后备份卷的目录(如/var/lib/docker/volumes/<volume-name>)。

Bind mounts (绑定挂载)

简介

  • 绑定挂载可以存储在主机系统的任何位置它们甚至可能是重要的系统文件或目录 Docker主机或Docker容器上的非Docker进程可以随时修改它们。
  • 绑定挂载的性能非常高,但它们依赖于主机的文件系统,该文件系统具有特定的可用目录结构。
  • 绑定挂载允许访问敏感文件

    使用绑定挂载的一个副作用是,可以通过在容器中运行的进程来更改主机文件系统,包括创建、修改或删除重要的系统文件或目录。这是一种强大的能力,可能会带来安全隐患,包括影响主机系统上的非Docker进程。

推荐使用情况

  • 将配置文件从主机共享到容器。 这就是Docker默认情况下为容器提供DNS解析的方式,通过将/etc/resolv.conf从主机安装到每个容器中。
  • 当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时。

绑定挂载与卷注意点

如果将空卷挂载到容器中已经存在的文件或目录时,则这些文件或目录的内容会被复制到卷中。同样,如果启动一个容器时并指定了一个不存在的卷,则会创建一个空卷。这是预填充另一个容器所需数据的好方法。

如果将绑定挂载或非空卷挂载到容器中已经存在的某些文件或目录时,则这些文件或目录会被挂载遮挡,就像将文件保存到Linux主机上的/mnt中,然后将USB驱动器挂载到/mnt中一样。/mnt的内容将被USB驱动器的内容遮挡,直到USB驱动器被卸载。遮挡的文件不会被删除或更改,但在绑定挂载或卷挂载还未卸载前是无法访问的。


docker 非持久化存储

tmpfs mounts (tmpfs 挂载)

简介

  • tmpfs 挂载 只存储在主机系统的内存中,从不写入主机系统的文件系统。
  • tmpfs 挂载 不持久化在磁盘上,无论是在Docker主机上还是在容器内。它可以在容器的生命周期内被容器用来存储非持久状态或敏感信息

推荐使用情况

  • tmpfs 挂载 最适合于不希望数据持久存在于主机或容器中的情况。 这可能是出于安全原因,或者是为了在应用程序需要写入大量非持久性状态数据时保护容器的性能。

named pipes (命名管道)

  • npipe挂载 可以用于Docker主机和容器之间的通信。常见的用例是在容器内运行第三方工具,并使用命名管道连接到Docker Engine API。

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

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

相关文章

leetcode100——相同的树

文章目录 题目详情分析Java完整代码 题目详情 leetcode100 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例&#xff1a; 分析 主要想法…

vue3头像上传组件

用到了自定义组件v-model的双向绑定使用input的typefile这个原生html元素&#xff0c;通过监听change事件&#xff0c;获取到选择的文件&#xff08;注意&#xff0c;选择完文件值后&#xff0c;要把这个隐藏的input的typefile元素的value置为空&#xff0c;否则&#xff0c;下…

【关于C++中----异常】

文章目录 一、C语言中处理错误的方式二、C异常概念三、异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四、自定义异常体系五、C标准库的异常体系六、异常的优缺点 一、C语言中处理错误的方式 C语言中常见的错误类型包括&#xff1a;语法错误、逻…

访问 virtualbox中的mysql

在 mysql.user 中存储这用户可访问的的host地址 select user,host from user;修改访问权限 可以使用sql语句 use mysql; mysql>update user set host % where user root; flush privileges或者使用mysql的权限语句 use mysql; Grant all on *.* to root% identified b…

深入浅出C++ ——异常

文章目录 一、C语言传统的处理错误的方式二、C异常概念三、异常的使用异常的抛出和捕获异常的重新抛出异常安全异常规范 四、自定义异常体系无、C标准库的异常体系六、异常的优缺点 一、C语言传统的处理错误的方式 C语言传统的处理错误的机制&#xff1a; 终止程序&#xff0…

docker打包部署spring boot应用(mysql+jar+Nginx)

文章目录 一、基本准备二、mysql部署二、jar部署三、Nginx部署 一、基本准备 小唐拿的就是之前放置在我们服务器上的应用进行部署&#xff0c;主要就是mysql和jar还有Vue的部署。 目前已经有的是jar、已经打包好的vue 项目参考&#xff1a;小破站数据大屏可视化&#xff08;…

【IPv6】IPv6有无状态地址分配及IPv6路由

IPv6有无状态区分 有状态可控、可管理。有IP地址管理者&#xff0c;能够识别客户端。根据不同客户端分配对应v6地址&#xff0c;客户端和服务器存在租期及续约。无状态无控、难管理。无IP地址管理者&#xff0c;没人识别客户端。客户端根据网关发送的相同的RA报文内容&#xf…

path/to/sdkmanager --install “cmdline-tools;latest“

执行flutter doctor时、报错Android Studio的命令行工具没有安装& 以及 android-licenses没有同意 其中提示错误语句如标题: path/to/sdkmanager --install "cmdline-tools;latest"之类的, 因为同意条款的时候,日志太多,所以把报错覆盖了.没有截图. 解决方法: …

一个简单的servlet+Jsp+MySQL/Oracle程序

一个简单的servletJspMySQL/oracle程序 1. 创建项目 使用 IDEA 创建一个 Maven 项目. 1.1、File -> New Project Name:javaservlet4 Location:选择要存放的路径 Language:Java Build system:Maven 点击Create按钮 ​​​​​​​1.2、Pom.xml配置 <dependencies…

整数在内存中的存储:原码、反码、补码 大小端字节序

本篇博客会讲解整数在内存中的存储形式&#xff0c;以及整数二进制的3种表示形式&#xff1a;原码、反码、补码&#xff0c;还有大小端的相关知识点。相信读完本篇博客&#xff0c;大家对内存的了解会上一个台阶。 注意&#xff1a;本篇博客讨论的是整数在内存中的存储&#x…

【五一创作】【数学建模】matlab的常用函数运用(1)

文章目录 1. matlab基本常识2. 常用输入输出函数2.1 输出函数2.2 拼接函数&#xff08;字符串的合并&#xff09;2.3 输入函数 3. 求和函数3.1 向量求和3.2 矩阵求和 4. 提取矩阵元素4.1 取第x行第y列的元素4.2 取指定行或列的所有元素4.3 取指定某些行的所有元素 1. matlab基本…

MongoDB聚合操作

文章目录 一、单一聚合二、聚合管道2.1 $match / $project / $count2.2 $limit / $skip / $sort2.3 $group 分组查询2.4 $unwind 展开数组2.5 $lookup 左外连接2.6 $bucket 存储桶 三、MapReduce 提示&#xff1a;以下是本篇文章正文内容&#xff0c;MongoDB 系列学习将会持续更…

域名解析出现错误,该如何解决?

域名作为网络地址&#xff0c;是我们访问网站的必经之路&#xff0c;域名解析就是把你的域名解析成一个ip地址&#xff0c;在使用的过程中遇到域名解析文件异常也是常有的事。如果域名解析出现错误&#xff0c;该怎么解决呢&#xff1f; 一、打开网页时&#xff0c;显示域名解析…

Redis主从复制、哨兵实战

环境&#xff1a;linux centos7.x &#xff0c;虚拟机3台 版本&#xff1a;redis-6.2.6 1.下载安转redis 下载地址 wget https://download.redis.io/releases/redis-6.2.6.tar.gz解压 tar -zxvf redis-6.2.6.tar.gz移动目录 mv redis-6.2.6 /usr/local/redis编译 cd /usr/…

【GORM框架】ORM介绍、GORM简单连接和高级配置详解

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: GORM框架学习 近期目标&#xff1a;写好专栏的每一篇文章 目录 一、简介…

配准带尺度点云的方法汇总

如果点集之间不存在缩放关系时(即尺度相同时), 可以用经典ICP( Iterative Closest Point )方法求解得到旋转矩阵R和平移向量t来进行点集对齐。 如果存在缩放关系时&#xff0c;首先估计出点集S1和S2之间的缩放倍数s, 我们就可以利用ICP算法求解。 一、尺度因子s是两个点集中线…

HashSet底层原理

特点&#xff1a;无序、不可重复 LinkedHashSet 有序、可重复&#xff08;底层通过双向链表的方式记录元素的存储顺序&#xff09; HashSet底层数据结构是哈希表 jdk1.8之前&#xff1a;哈希表组成&#xff1a;数组 链表 jdk1.8之后&#xff1a; 数组 链表 红黑树 存储…

Flutter 组件抽取:日期(DatePicker)、时间(TimePicker)弹窗选择器【仿照】

简介 仿照《Flutter 仿ios自定义一个DatePicker》实行的日期弹窗选择器&#xff08;DatePicker&#xff09;、时间弹窗选择器&#xff08;TimePicker&#xff09; 效果 范例 class _TestPageState extends State<TestPage> {overridevoid initState() {super.initStat…

Java笔记_15(集合三)

Java笔记_15 一、创建不可变集合1.1、创建不可变集合的应用场景1.2、创建不可变集合的书写格式 二、Stream流2.1、体验Stream流2.2、Stream流的思想和获取Stream流2.3、Stream流的中间方法2.4、Stream流的终结方法2.5、收集方法collect 一、创建不可变集合 不可变集合&#xf…

山东省2023年春季高考技能测试电子技术类专业试题

注意事项 1.本试题为样题&#xff0c;实际测试试题与样题基本一致&#xff0c;不同场次试题电路装配要求会有变化&#xff0c;请考生仔细审题。 2.严禁考生私自送电&#xff0c;严禁带电操作&#xff08;通电调试除外&#xff09;。 3.考生要服从监考人员安排&#xff0c;遵…