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

微服务实战系列之玩转Docker(四)

前言

幸福,就是继续追寻已经拥有的东西。
——圣·奥古斯丁

在这里插入图片描述

什么算已经拥有的?比如爱你的人在等你,比如每日热腾腾的三餐,比如身边可爱的同事,又比如此刻的你,看见了这篇博文(😁😁😁)。所以这么看来幸福很简单,也很直接哈。轻松自在,乐于学习,何尝不是一种已经拥有的幸福。

话不多说,言归正传。博主前序的三篇博文,旨在对docker的背景目标、运行原理、桌面体验进行简单概述。我想任何一个“小白”读完后,必然有所收获,甚至可以直接向团队提建议——我们愉快的使用docker吧!

当然,在这里,博主先奉上一句:“玩归玩,闹归闹,不用不知道,用过必骄傲”。可是上古兵法云:“知己知彼,百战不殆”,因此,如需熟练使用docker,还需掌握更多“情报”

本博将继续挖掘docker的内涵,呈现它的魅力!

在这里插入图片描述

Q:如何让Docker更高效

既然提到高效,我们是不是可以想到几个不高效的场景?比如最常见的系统迁移方面。

根据系统实施经验,在系统迁移前,我们最优先考虑的方面主要是数据和应用。换句话说,如何保持数据的连续性和系统的稳定性,是迁移时需解决的核心问题。

当然,数据量大不大取决于业务复杂度,但是无论大小与否,在保持业务连续性的前提下,往往会对应用的迁移施加影响。所以此时怎么办?

有些人说使用docker吧,一劳永逸!这个主意好,但是docker也有“难言之隐”。不过还是前辈们思考周全,真的让我们做到了“一劳永逸”

1. 面临的挑战

我们在使用docker时,会面临哪些主要挑战呢?

1.1 容器间的数据共享

容器可以run anywhere,那么数据是否可以save anywhere?如无法满足,则带来一个问题,数据在容器间是无法共享的。
在这里插入图片描述

1.2 容器与docker主机间的数据共享

容器素以“轻,灵”著称,那么数据是否可以真的被有效剥离?如无法满足,则带来一个问题,容器可能会“越来越胖”,同时数据随容器的消亡而消失。
在这里插入图片描述

1.3 容器管理数据的性能代价

我们知道容器的运行是在基础镜像之上,加了个“盖”——可读写层。这个机制靠一个特殊的存储驱动来满足。同时联合文件系统(UnionFS)也依靠存储驱动来实现。如频繁的对容器进行数据操作,那么试想,容器能受得了么?

在这里插入图片描述

2. 提供的方案

docker为了真正做到数据与容器的分家,满足数据的共享,提供了3种方案:

方案名方案简介
Data Volume翻译为数据卷,由docker管理的一种文件目录,主机其他进程无法读写。(推荐
Bind Mount绑定挂载,由用户自定义存储目录,主机其他进程可读写。(常用
tmpfs Mount临时挂载,只临时存储于主机内存,重启后消失。(不常用)

在这里插入图片描述

2.1 data volume

一种不同于联合文件系统,支持以正常的文件或者目录的形式,与主机进行数据交互,进而实现保存持久化数据以及共享容器间的数据。

一句话总结:docker为了解决以上挑战或劣势,特别发明了一种称为“卷”的文件或目录,这个目录或文件的使命就是完成容器数据的持久化。使用它时,数据被默认存储在主机指定的目录:/var/lib/docker/volumes/卷
当然卷可以
一个卷支持用于一个或多个容器,同时不会自动消失,如需删除必须手工操作。可命名也可通过docker自动取名(全局唯一)。

docker volume 命令 //用于卷管理
命令作用
create创建一个数据卷。
inspect查看一个或多个数据卷基本信息。
ls查看已创建的所有数据卷。
prune删除全部未使用的卷。
rm删除一个或多个指定的数据卷。

这是一个卷的信息,可做参考:
在这里插入图片描述

2.2 Bind Mount

一种直接与主机磁盘进行交互的数据挂载方式,实现用途大致和volume类似,也是常用的docker数据持久化技术。

一句话总结:与volume相比,终于实现了目录选择的自由了,容器与主机直接交互。当然,“优势太明显,劣势也直接”。如此选择,会直接影响容器的数据安全。所以选择该方式,通常是一把双刃剑,需评估后操作。

在这里插入图片描述

2.3 tmpfs Mount

Bind Mount相比,容器的数据只在内存管理,不再持久化,这就是tmpfs。

一句话总结:没有持久化,也就无需考虑数据共享的情景(涉及敏感数据保护、数据安全等),可以选择tmpfs Mount


结语

docker为了解决数据持久化,满足迁移效率和数据共享的需要,提供了以上3种数据交互方案。每种方案均代表了一类使用场景。根据业务特性和安全要求,选择最佳的持久化方案,应该是我们从中学到的基本经验之一。


系列回顾

  • 微服务实战系列之玩转Docker(三)
  • 微服务实战系列之玩转Docker(二)
  • 微服务实战系列之玩转Docker(一)
  • 微服务实战系列之云原生

在这里插入图片描述

相关文章:

微服务实战系列之玩转Docker(四)

前言 幸福,就是继续追寻已经拥有的东西。 ——圣奥古斯丁 什么算已经拥有的?比如爱你的人在等你,比如每日热腾腾的三餐,比如身边可爱的同事,又比如此刻的你,看见了这篇博文(😁&#…...

微信小程序-自定义组件生命周期

一.created 组件实例创建完毕调用。定义在lifetimes对象里。 不能在方法里面更改data对象里面的值,但是可以定义属性值。 lifetimes:{//不能给data设置值created(){this.testaaconsole.log("created") }}二. attached 模板解析完成挂载到页面。 可以更…...

2024年7月23日(samba DNS)

​ 回顾 1、关闭防火墙,关闭selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 2、修改静态IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改uuid的目的是为了保证网络的唯一性 3、重启网络服务 systemctl restart netwo…...

Hyperledger顶级项目特点和介绍

Hyperledger的顶级项目 Hyperledger是Linux基金会主持的开源区块链项目,其目的是推动跨行业的区块链技术的开发和应用。以下是Hyperledger的顶级项目: 1. Hyperledger Fabric 描述:Hyperledger Fabric是一个可扩展的企业级区块链平台&…...

操作系统——笔记(1)

操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合,控制和管理着整个计算机系统的硬件和软件资源,是最基本的系统软件。 常见的操作系统:ios、windows、Linux。 计算机系统的结构层次&am…...

isEmpty() 和 isBlank()的区别

isEmpty() 和 isBlank()的区别 平时自己开发的时候没有注意到这个地方,直到实习的时候代码审查的时候发现其用法上两者的不同. isEmpty() public static boolean isEmpty(String str) {return str null || str.length() 0; }isBlank() public static boolean isBlank(Strin…...

scrapy生成爬虫数据为excel

scrapy生成爬虫数据为excel 使用openpyxl(推荐)安装openpyxl库建一个新的Item Pipeline类在settings.py中启用ExcelPipeline说明 使用scrapy-xlsx首先,安装scrapy-xlsx:然后在Scrapy爬虫中使用管道:说明 要使用Scrapy生…...

vscode debug C++无法输入问题

研究了半天vscode debug c无法输入的问题,原来vscode的文档里面已经记录了。issue都是2020年提的了,还没解决。。。 不过人家也确实给了一个解法:用外部的terminal。 不过怎么看都还不是很方便,所以还是推荐直接使用CodeLLDB插件来…...

MODBUS tcp学习总结

MODBUS TCP协议实例数据帧详细分析_modbus 帧结构-CSDN博客...

【第一天】计算机网络 TCP/IP模型和OSI模型,从输入URL到页面显示发生了什么

TCP/IP模型和OSI模型 这两个模型属于计算机网络的体系结构。 OSI模型是七层模型,从上到下包括: 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 TCP/IP模型是四层模型&…...

发现FionaAI:免费体验最新的GPT-4o Mini模型!

你现在可以在FionaAI上免费体验OpenAI刚刚发布的GPT-4o Mini模型!作为您在Google Chrome中的ChatGPT驱动助手,FionaAI可以随时随地与您对话,帮助您轻松创作和处理文本。 为什么选择GPT-4o Mini? 最新技术:GPT-4o Mini是…...

Linux Gui 窗口对话和窗口操作

zenity 可以实现窗口对话 eg: zenity --error --width 300 --text "Permission denied. Cannot write to the file." ChosenDate$(zenity --calendar --text "Choose a date" --title "How-To Geek Rota" --day 1 --month 9 --year 2019); …...

人工智能驾驶技术:引领未来道路

随着科技的不断进步,人工智能驾驶技术正以惊人的速度改变着我们的交通方式和生活方式。这项技术不仅令人兴奋,还引发了许多关于安全性、道德和法律等方面的深思。本文将探讨人工智能自动驾驶技术的发展现状、应用前景以及对社会的影响。 技术背景与发展…...

管理的核心是管人,管人的核心就是这3条,看懂的是高手

管理的核心是管人,管人的核心就是这3条,看懂的是高手 一:管欲 每个人都有欲望,无可厚非。管理者的任务就是利用欲望,管理欲望,通过欲望来达到管人的目的。 最需要管理的就是以下两种: 1、金…...

代码解读:Diffusion Models中的长宽桶技术(Aspect Ratio Bucketing)

Diffusion Models专栏文章汇总:入门与实战 前言:自从SDXL提出了长宽桶技术之后,彻底解决了不同长宽比的图像输入问题,现在已经成为训练扩散模型必选的方案。这篇博客从代码详细解读如何在模型训练的时候运用长宽桶技术(Aspect Rat…...

Linux下如何使用GitLab进行团队协作

在Linux系统中,使用GitLab进行团队协作是非常常见的做法。GitLab是一个基于Git的代码托管和项目管理平台,可以帮助团队成员共享、追踪和管理代码的开发过程。本文将介绍如何在Linux系统中安装和配置GitLab,以及一些常用的团队协作功能。 安装…...

无法连接到internet怎么办?已连接但无internet访问,其实并不难

有时我们会遇到无法连接到Internet的问题,由多种原因引起,包括硬件故障、软件设置问题、网络供应商故障等。本文将介绍无法连接到Internet时可以采取的步骤。 简述 当你无法连接到Internet时,可以按照以下步骤进行检查和解决: 1…...

建投数据人力资源系列产品获得欧拉操作系统及华为鲲鹏技术认证书

近日,经欧拉生态创新中心和华为技术有限公司测评,建投数据自主研发的人力资源管理系统、招聘管理系统、绩效管理系统、培训管理系统,完成了基于欧拉操作系统openEuler 22.03、华为鲲鹏Kunpeng 920(Taisha 200)的兼容性…...

【iOS】——属性关键字的底层原理

strong,retain,copy,atomic,nonatomic c源码 interface propertyTest : NSObject property (nonatomic, strong) NSString *nsstring___StrongTest; property (nonatomic, retain) NSString *nsstring___RetainTest; property (n…...

电影类平台如何选择服务器

电影类平台如何选择服务器 1、数据存储 电影网站对服务器的要求是比较高的,对存储空间的需求特别大,所以在服务器选择上首先要确保足够大的存储空间。另外,当你的网站内容特别多时,内存不够用,可以选择增加内存&#x…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

Opencv中的addweighted函数

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

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...