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

Docker 学习路线 5:在 Docker 中实现数据持久化

Docker 可以运行隔离的容器,包括应用程序和其依赖项,与主机操作系统分离。默认情况下,容器是临时的,这意味着容器中存储的任何数据在终止后都将丢失。为了解决这个问题并在容器生命周期内保留数据,Docker 提供了各种数据持久化方法。

  • Docker 卷
  • 绑定挂载
  • Docker tmpfs 挂载

Docker 卷

Docker 卷是持久化 Docker 容器生成和使用的数据的首选方法。卷是主机机器上的目录,Docker 用它来存储文件和目录,可以超出容器生命周期。Docker 卷可以在容器之间共享,并提供各种好处,如易于备份和数据迁移。

要创建卷,请使用以下命令:

docker volume create volume_name

要使用卷,请在您的 docker run 命令中添加 --volume (或 -v)标志:

docker run --volume volume_name:/container/path image_name

绑定挂载

绑定挂载允许您将主机机器上的任何目录映射到容器内的目录。这种方法在开发环境中很有用,当您需要修改主机系统上的文件,并且这些更改应立即在容器中生效时。

要创建绑定挂载,请在您的 docker run 命令中使用 --mount 标志,并将 type=bind 添加到其中:

docker run --mount type=bind,src=/host/path,dst=/container/path image_name

Docker tmpfs 挂载

Docker tmpfs 挂载允许您在容器的内存中直接创建临时文件存储。在 tmpfs 挂载中存储的数据快速且安全,但一旦容器终止,数据将丢失。

要使用 tmpfs 挂载,请在您的 docker run 命令中添加 --tmpfs 标志:

docker run --tmpfs /container/path image_name

通过采用这些方法,您可以确保容器生命周期内的数据持久性,增强 Docker 容器的实用性和灵活性。请记住选择最适合您用例的方法,无论是首选 Docker 卷,方便的绑定挂载,还是快速且安全的 tmpfs 挂载。

临时文件系统

默认情况下,Docker 容器内的存储是短暂的,这意味着容器内部进行的任何数据更改或修改只会持续到容器运行的时间。一旦容器停止并移除,所有相关的数据都将丢失。这是因为 Docker 容器的本质是无状态的。

这种临时或短暂的存储称为“临时容器文件系统”。这是 Docker 的一个重要特性,因为它能够在不考虑容器状态的情况下,在不同的环境中快速、一致地部署应用程序。

临时文件系统与数据持久性

任何存储在容器的临时文件系统中的数据在容器停止或移除时都会丢失,这对应用程序的数据持久性构成了挑战。对于像数据库这样需要在多个容器生命周期中保持数据持久性的应用程序,这是特别有问题的。

为了克服这些挑战,Docker 提供了几种数据持久性的方法,例如:

  • :Docker 管理的存储选项,存储在容器的文件系统之外,允许数据在容器重新启动和删除时持久化。
  • 绑定挂载:将主机机器的目录或文件映射到容器中,有效地将主机的存储与容器共享。
  • tmpfs 挂载:内存中的存储,适用于仅需要在容器生命周期内持久化数据的情况。

通过实施这些策略,Docker 确保应用程序数据可以在单个容器的生命周期之外得以保留,使得可以处理有状态的应用程序。

卷挂载(Volume Mounts)

卷挂载是将主机系统上的文件夹或文件映射到容器内部的文件夹或文件的一种方式。这使得即使容器被删除,数据仍然可以在容器外部保持。此外,多个容器可以共享同一个卷,使得容器之间的数据共享变得容易。

创建卷(Creating a Volume)

要在Docker中创建一个卷,您需要运行以下命令:

docker volume create my-volume

此命令将创建名为my-volume的卷。您可以使用以下命令查看创建的卷的详细信息:

docker volume inspect my-volume

将卷挂载到容器(Mounting a Volume in a Container)

要将卷挂载到容器中,您需要在运行容器时使用-v--mount标志。以下是一个例子:

使用-v标志:

docker run -d -v my-volume:/data your-image

使用**--mount**标志:

docker run -d --mount source=my-volume,destination=/data your-image

在上面的两个示例中,my-volume是我们之前创建的卷的名称,/data是卷将被挂载到容器内的路径。

在多个容器之间共享卷(Sharing Volumes Between Containers)

要在多个容器之间共享卷,只需在多个容器上挂载相同的卷即可。以下是如何在运行不同映像的两个容器之间共享my-volume的示例:

docker run -d -v my-volume:/data1 image1docker run -d -v my-volume:/data2 image2

在此示例中,image1image2将可以访问存储在my-volume中的相同数据。

删除卷(Removing a Volume)

要删除卷,您可以使用**docker volume rm**命令后跟卷名称:

docker volume rm my-volume

这就是卷挂载在Docker中的基本知识。您可以使用它们高效且安全地在容器之间持久化和共享数据。

  • Docker Volumes

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

在这里插入图片描述

相关文章:

Docker 学习路线 5:在 Docker 中实现数据持久化

Docker 可以运行隔离的容器,包括应用程序和其依赖项,与主机操作系统分离。默认情况下,容器是临时的,这意味着容器中存储的任何数据在终止后都将丢失。为了解决这个问题并在容器生命周期内保留数据,Docker 提供了各种数…...

linux下使用vscode对C++项目进行编译

项目的目录结构 头文件swap.h 在自定义的头文件中写函数的声明。 // 函数的声明 void swap(int a,int b);swap.cpp 导入函数的声明&#xff0c;写函数的定义 #include "swap.h" // 双引号表示自定义的头文件 #include <iostream> using namespace std;// 函…...

LangChain+LLM实战---ChatGPT的即时插件套件制作

英文原文&#xff1a;Instant Plugins for ChatGPT: Introducing the Wolfram ChatGPT Plugin Kit 在一分钟内构建一个新插件 几周前&#xff0c;我们与OpenAI合作发布了Wolfram插件&#xff0c;使ChatGPT可以使用Wolfram语言和Wolfram|Alpha作为工具&#xff0c;在ChatGPT内部…...

包装印刷行业万界星空科技云MES解决方案

印刷业的机械化程度在国内制造行业内算是比较高的&#xff0c;不算是劳动密集型企业。如书本的装订、包装的模切、烫金、糊盒等都已经有了全自动设备。印刷厂除了部分手工必须采用人工外&#xff0c;大部分都可以采用机器&#xff0c;也就意味着可以由少量工人生产出大量产品。…...

Python教程---计算机语言简介

1.计算机编程语言的发展历程 计算机语言发展经历了三个阶段&#xff1a; 机器语言 - 机器语言通过二进制编码来编写程序&#xff0c;打孔织带机。 - 执行效率好&#xff0c;编写起来太麻烦 符号语言&#xff08;汇编&#xff09; - 使用符号来代替机器码 - 编写程序时&#xf…...

rhcsa-文件内容显示

浏览普通文件内容 浏览文件的命令 命令常用选项说明cat -n 对输出内容中的所有行标注行号 -b 对输出内容中的非空行标注行号 查看文件的内容head-num 指定需要显示文件num行的内容默认查看文前十行的内容tail -num 指定需要显示文件num行的内容 -f 使tail不停的去读取显示文…...

宠物养成猫狗商城门店问诊档案流量主小程序开发

宠物养成猫狗商城门店问诊档案流量主小程序开发 猫狗宠物养成商城门店问诊档案流量主小程序开发&#xff0c;这是一个充满趣味性和创新性的项目。通过将宠物养成游戏与商城、问诊服务、社交功能等相结合&#xff0c;为用户提供一站式的宠物养育体验。 在宠物养成方面&#x…...

应用安全四十二:SSO安全

一、什么是SSO SSO是单点登录(Single Sign On)的缩写,是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是比较流行的企业业务整合的解决方案之一。 身份验证过程依赖于双方之间的信任关…...

【行云流水线实践】基于“OneBuild”方法对镜像进行快速装箱 | 京东云技术团队

在云原生领域&#xff0c;无论使用哪种编排调度平台&#xff0c;Kubernetes&#xff0c;DockerSwarm&#xff0c;OpenShift等&#xff0c;业务都需要基于镜像进行交付&#xff0c;我们在内部实践“Source-to-image”和链式构建&#xff0c;总而总结出“OneBuild”模式。 其核心…...

软件开发必备神器!一文读懂10款热门看板工具推荐!

看板&#xff08;Kanban&#xff09;是一种流行的框架&#xff0c;用于实施敏捷和DevOps软件开发。它要求实时沟通每个人的能力&#xff0c;并全面透明地展示正在进行的工作。工作项目在看板上以可视化方式表示&#xff0c;使项目经理和所有团队成员可以随时查看每个工作的状态…...

怎样提取视频提取的人声或伴奏?

有些小伙伴们进行音视频创作时&#xff0c;可能会需要提取音频的人声或者是伴奏。这里给大家推荐一个音分轨人声分离软件&#xff0c;支持一键提取音频人声和一键提取伴奏功能&#xff0c;可批量导入文件同步提取&#xff0c;简单高效&#xff0c;是音视频创作者的不二选择&…...

SpringBoot概述

SpringBoot是Spring提供的一个子项目&#xff0c;用于快速构建Spring应用程序。 SpringFramework&#xff1a;核心功能SpringData&#xff1a;数据获取SpringSecurity&#xff1a;认证授权SpringAMQP&#xff1a;消息传递SpringCloud&#xff1a;服务治理 SpringBoot新特性&…...

深度学习框架TensorFlow.NET环境搭建1(C#)

测试环境 visual studio 2017 window10 64位 测试步骤如下&#xff1a; 1 新建.net framework控制台项目&#xff0c;工程名称为TensorFlowNetDemo&#xff0c;.net framework的版本选4.7.2&#xff0c;如下图&#xff1a; 2 分别安装TensorFlow.NET包(先装)和SciSharp.…...

Git客户端软件 Tower mac中文版特点说明

Tower mac是一款Mac OS X系统上的Git客户端软件&#xff0c;它提供了丰富的功能和工具&#xff0c;帮助用户更加方便地管理和使用Git版本控制系统。 Tower mac软件特点 1. 界面友好&#xff1a;Tower的界面友好&#xff0c;使用户能够轻松地掌握软件的使用方法。 2. 多种Git操…...

详解IPD需求分析工具$APPEALS

够让企业生存下去的是客户&#xff0c;所以&#xff0c;众多企业提出要“以客户为中心”&#xff0c;那如何做到以客户为中心&#xff1f;IPD中给出的答案是需求管理。 需求管理流程&#xff0c;是IPD&#xff08;集成管理开发&#xff09;体系中的四大支撑流程之一&#xff0…...

318. 最大单词长度乘积

这道题求没有重复字母的两个字符串的最大长度乘积 重点在于怎么判断两个字符串没有重复字母 题目中只有小写字母&#xff0c;最多26个&#xff0c;于是想到使用26位二进制数来代表每一个字符串 有哪个字母就在对应位置设1 这个转换使用的是num | 1 << (c-a); 对字符串中的…...

.NET Core 中插件式开发实现

在 .NET Framework 中&#xff0c;通过AppDomain实现动态加载和卸载程序集的效果&#xff1b;但是.NET Core 仅支持单个默认应用域&#xff0c;那么在.NET Core中如何实现【插件式】开发呢&#xff1f; 一、.NET Core 中 AssemblyLoadContext的使用 1、AssemblyLoadContext简…...

并查集模版以及两道例题

&#x1f4af; 博客内容&#xff1a;并查集 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准C后端工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&#xff1a;这里是C…...

英飞凌TLF35584规格书中文

官网&#xff1a; 英飞凌TLF35584QVVS2 TLF35584_SPI&#xff1a; 1 Overview2 Block Diagram3 Pin Configuration3.1 Pin Assignment - PG-VQFN-48 4 General Product Characteristics4.1 Absolute Maximum Ratings 绝对最大额定值4.2 Functional Range4.3 Thermal Resistance…...

【教3妹学编程-算法题】最大单词长度乘积

3妹&#xff1a;哇&#xff0c;今天好冷啊&#xff0c; 不想上班。 2哥&#xff1a;今天气温比昨天低8度&#xff0c;3妹要空厚一点啊。 3妹 : 嗯&#xff0c; 赶紧把我的羽绒服找出来穿上&#xff01; 2哥&#xff1a;哈哈&#xff0c;那倒还不至于&#xff0c; 不过气温骤降&…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...