当前位置: 首页 > 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…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

git: early EOF

macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...