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

容器技术概述

容器技术概述

软件应用程序通常依赖于运行时环境提供的其他库、配置文件或服务。软件应用程序的传统运行环境是物理主机或虚拟机,应用程序依赖项作为主机的一部分安装。

例如,考虑一个 Python 应用程序,它需要访问实现 TLS 协议的公共共享库。传统上,系统管理员会在安装 Python 应用程序之前安装提供共享库的所需包。

传统部署的软件应用程序的主要缺点是应用程序的依赖项与运行时环境密切相关。

当对基本操作系统 (OS) 应用任何更新或补丁时,应用程序可能会中断。

例如,对 TLS 共享库的操作系统更新删除了 TLS 1.0 作为受支持的协议。这会破坏已部署的 Python 应用程序,因为它被编写为使用 TLS 1.0 协议进行网络请求。这迫使系统管理员回滚操作系统更新以保持应用程序运行,从而阻止其他应用程序使用更新包的好处。

因此,开发传统软件应用程序的公司可能需要进行全套测试,以保证操作系统更新不会影响主机上运行的应用程序。

此外,传统部署的应用程序必须在更新关联的依赖项之前停止。为了最大限度地减少应用程序停机时间,组织设计和实施复杂的系统以提供其应用程序的高可用性。在单个主机上维护多个应用程序通常变得很麻烦,并且任何部署或更新都有可能破坏组织的应用程序之一。

图 1.1:容器与操作系统的区别
或者,可以使用容器部署软件应用程序。

容器是一组独立于系统其余部分的一个或多个进程。

容器提供了许多与虚拟机相同的好处,例如安全性、存储和网络隔离。容器需要的硬件资源要少得多,而且启动和终止都很快。它们还隔离了应用程序的库和运行时资源(例如 CPU 和存储),以最大限度地减少任何操作系统更新对主机操作系统的影响,如图1.1:容器与操作系统的差异中所述。

容器的使用不仅有助于提高托管应用程序的效率、弹性和可重用性,还有助于提高应用程序的可移植性。Open Container Initiative (OCI) 提供了一组定义容器运行时规范和容器映像规范的行业标准。镜像规范定义了构成容器镜像的文件和元数据包的格式。当您将应用程序构建为符合 OCI 标准的容器镜像时,您可以使用任何符合 OCI 标准的容器引擎来执行该应用程序。

有许多容器引擎可用于管理和执行单个容器,包括 Rocket、Drawbridge、LXC、Docker 和 Podman。Podman 在 Red Hat Enterprise Linux 7.6 及更高版本中可用,并在本课程中用于启动、管理和终止单个容器。

以下是使用容器的其他主要优势:

  • 低硬件占用空间
    容器使用 OS 内部功能来创建一个隔离的环境,在该环境中,使用命名空间和 cgroup(控制组)等 OS 设施管理资源。与虚拟机管理程序相比,这种方法最大限度地减少了 CPU 和内存开销。在 VM 中运行应用程序是一种与运行环境隔离的方法,但它需要大量的服务来支持容器提供的相同的低硬件占用空间隔离。

  • 环境隔离
    容器在封闭环境中工作,在该环境中对主机操作系统或其他应用程序所做的更改不会影响容器。由于容器所需的库是独立的,因此应用程序可以无中断地运行。例如,每个应用程序都可以存在于具有自己的库集的自己的容器中。对一个容器所做的更新不会影响其他容器。

  • 快速部署
    容器部署很快,因为不需要安装整个底层操作系统。通常,为了支持隔离,需要在物理主机或 VM 上安装新的操作系统,任何简单的更新都可能需要完全重启操作系统。容器重启不需要停止主机操作系统上的任何服务。

  • 多环境部署
    在使用单个主机的传统部署场景中,任何环境差异都可能破坏应用程序。但是,使用容器时,所有应用程序依赖项和环境设置都封装在容器映像中。

  • 可重用性
    无需设置完整的操作系统即可重复使用同一容器。例如,每个开发人员都可以使用提供生产数据库服务的同一数据库容器在应用程序开发期间创建开发数据库。使用容器,不再需要维护单独的生产和开发数据库服务器。单个容器映像用于创建数据库服务的实例。

通常,软件应用程序及其所有相关服务(数据库、消息传递、文件系统)都在单个容器中运行。这可能会导致与传统软件部署到虚拟机或物理主机相关的相同问题。在这些情况下,多容器部署可能更合适。

此外,容器是使用微服务进行应用程序开发的理想方法。每个服务都封装在一个轻量级且可靠的容器环境中,可以部署到生产或开发环境中。应用程序所需的容器化服务集合可以托管在一台机器上,无需为每个服务管理一台机器。

相比之下,许多应用程序不太适合容器化环境。例如,由于容器限制,访问内存、文件系统和设备等低级硬件信息的应用程序可能不可靠。

相关文章:

容器技术概述

容器技术概述 软件应用程序通常依赖于运行时环境提供的其他库、配置文件或服务。软件应用程序的传统运行环境是物理主机或虚拟机,应用程序依赖项作为主机的一部分安装。 例如,考虑一个 Python 应用程序,它需要访问实现 TLS 协议的公共共享库…...

「SAP」ABAP模块学习需要了解什么?快收下这份ABAP技术栈指南【附技能树】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计专业大二本科在读,阿里云社区专家博主,华为云社区云享专家,CSDN SAP应用技术领域新兴创作者。   在学习工…...

【python 基础篇 九】python的常用数据类型操作-------时间日历

目录1.python时间操作1.1 time模块1.2 calendar模块1.3 datetime模块1.python时间操作 python程序能用很多方式处理日期和时间,转换日期格式也是一个常见功能。 1.1 time模块 ​ 提供了处理时间和表示之间转换的功能 获取当前时间戳 概念:从0时区的1…...

华为OD机试真题Python实现【相同字符连续出现的最大次数】真题+解题思路+代码(20222023)

相同字符连续出现的最大次数 题目 输入一串字符串 字符串长度不超过100 查找字符串中相同字符连续出现的最大次数 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 ## 输入 输入只有一行,包含一个长度不超过100的字符串 输出描述 输出只…...

【Unity3D】空间和变换

1 空间 1.1 左右手坐标系及其法则 1.1.1 左右手坐标系 左手坐标系与右手坐标系Unity 局部空间、世界空间、裁剪空间、屏幕空间都采用左手坐标系,只有观察空间采用右手坐标系。 左右手坐标系除了坐标系朝向(旋向性)不同,还存在以…...

脑洞|ChatGPT加持下,ChatOps将如何革新团队协作与运维管理?

要说近期科技圈 “顶流”,非 ChatGPT 莫属。 比起目前常见的语音助手与聊天 bot,这位机器人显得更有 “人味儿”,不仅能模拟人类的语气,跟你聊得有来有回,还能写剧本、编音乐、写代码。 说到聊天工具,就让…...

华为OD机试真题Python实现【找数字】真题+解题思路+代码(20222023)

找数字 题目 给一个二维数组nums,对于每一个元素num[i],找出距离最近的且值相等的元素,输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出-1。 例如: 输入数组nums为 0 3 5 4 2 2 5 7 8 3 2 5 4 2 4对于 num[0][0] = 0,不存在相等的值。 对于 num[0][1] = 3,存…...

【Database-01】达梦数据库Docker版下载安装

1、前往达梦数据库官网下载 https://www.dameng.com/1.1、选择数据库 - 数据库产品系 1.2、选择 达梦数据库管理系统(DM8) 1.3、点击试用下载 1.4、注册达梦账户 1.5、选择DM8 Docker镜像 https://www.dameng.com/list_103.html1.6、或者使用以下网址也…...

Allegro如何打开格点显示效果操作指导

Allegro如何打开格点显示效果操作指导 Allegro可以设置格点显示效果,以格点来判定走线等等是否都处于格点上,如下图 如何打开格点显示效果,具体操作如下 点击Setup点击Grids...

电子技术——反馈放大器的分析方法总结

电子技术——反馈放大器的分析方法总结 第一种也是最简单的估算方法,直接拿出反馈网络,计算 β\betaβ 则假设在 AβA\betaAβ 无限大的情况下有 Af≃1/βA_f \simeq 1/\betaAf​≃1/β 。开环法。比第一种方法更能精确的估计 AAA 和 β\betaβ 的值。系…...

微服务系统启动,环境从0开始的搭建过程

1. JDK的下载安装(傻瓜式) 安装过程傻瓜式,直接一步到位。我安装的版本为:jdk-17_windows-x64_bin 2. 集成开发工具的下载安装:IDEA(傻瓜式) ideaIU-2021.2.1 网上资源很多,自己找…...

手工测试1年经验面试,张口要13K,我真是服了····

由于朋友临时有事, 所以今天我代替朋友进行一次面试,他需要应聘一个测试工程师, 我以很认真负责的态度完成这个过程, 大概近30分钟。 主要是技术面试, 在近30分钟内, 我与被面试者是以交流学习的方式进行的…...

【保姆级】手把手捋动态代理流程(JDK+Cglib超详细源码分析)

简介动态代理,通俗点说就是:无需声明式的创建java代理类,而是在运行过程中生成"虚拟"的代理类,被ClassLoader加载。 从而避免了静态代理那样需要声明大量的代理类。上面的简介中提到了两个关键的名词:“静态…...

Appium自动化测试 Inspector定位Webview/H5页面元素

目录操作步骤Python操作该混合App代码Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 FQ 使用Chrome://inspect来定位元素, 环境准备相当繁琐, 不仅需要想办法FQ, 而且还需要Android设备安装Google框架以及手机版Chrome浏览器以及相应的…...

数组求和方法总结,学点干货

1.循环 &#xff08;新手用&#xff09; 1.1 普通for 循环 简单质朴 const arr [1, 2, 3, 4, 5];let sum 0;for (let i 0; i < arr.length; i) {sum arr[i];}1.2 for in 循环 与普通for循环大同小异 const arr [1, 2, 3, 4, 5];let sum 0;for (let i in arr) {sum …...

斗地主洗牌发牌-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

【案例6-4】 斗地主洗牌发牌 【案例介绍】 1.任务描述 扑克牌游戏“斗地主”&#xff0c;相信许多人都会玩&#xff0c;本案例要求编写一个斗地主的洗牌发牌程序&#xff0c;要求按照斗地主的规则完成洗牌发牌的过程。一副扑克总共有54张牌&#xff0c;牌面由花色和数字组成…...

基于antd封装的二次业务筛选组件-table-filter

文档地址&#xff1a;https://flowerofsummer.github.io/components/ 业务筛选组件 支持各种类型的高级搜索组件 基础用法 组件响应式布局&#xff0c;默认显示两行&#xff0c;可以通过 maxLineCount 配置最多显示行数每行个数&#xff1a; 如果含有 time-range&#xff0…...

逆向-还原代码之max 再画堆栈图 (Interl 64)

// source code #include <stdio.h> void max(int * a, int * b) { if (*a < *b) *a *b; } int main() { int a 5, b 6; max(&a, &b); printf("a, b max %d\n", a); return 0; } // 再画堆栈图 下周一&#xff08;2.27…...

GitHub标星30K+的Java面试八股文长啥样?

2023年的互联网行业竞争越来越严峻&#xff0c;面试也是越来越难&#xff0c;一直以来我都想整理一套完美的面试宝典&#xff0c;奈何难抽出时间&#xff0c;这套1000道的Java面试手册我整理了整整1个月&#xff0c;上传到Git上目前star数达到了30K 一、32 道 MySQL 面试题 1&…...

CVE-2022-39197 POC(CobaltStrike XSS <=4.7)漏洞复现

漏洞说明 根据9.20日CobaltStrike官方发布的最新4.7.1版本的更新日志中介绍&#xff0c;<4.7的teamserver版本存在XSS漏洞&#xff0c;从而可以造成RCE远程代码执行 一位名为“Beichendream”的独立研究人员联系我们&#xff0c;告知我们他们在团队服务器中发现的一个 XSS …...

VMware16虚拟机扩容实战:Ubuntu22.04磁盘空间不足的终极解决方案

VMware16虚拟机扩容实战&#xff1a;Ubuntu22.04磁盘空间不足的终极解决方案 当你全神贯注地在Ubuntu22.04虚拟环境中开发项目时&#xff0c;突然弹出的"磁盘空间不足"警告足以让任何开发者心头一紧。特别是在使用VMware16这类虚拟化平台时&#xff0c;初始分配的磁盘…...

高考数学97分,我的“数学直觉“比140分更好用:链表指针操作的代数思维:从离散数学看单链表

目录 一&#xff0c;序言 二&#xff0c;数学思维 三&#xff0c;核心概念 1. 节点&#xff08;Node&#xff09; 2. 头指针&#xff08;Head Pointer&#xff09; 3. 链式存储 4. 链表类型 5. 核心操作 6. 内存管理 7. 与顺序表的对比 数学思维&#xff1a; 8. 应用场景 四…...

打造专属海拉鲁冒险:塞尔达传说旷野之息个性化存档编辑指南

打造专属海拉鲁冒险&#xff1a;塞尔达传说旷野之息个性化存档编辑指南 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 在塞尔达传说旷野之息的广阔世界中&#xf…...

TlbbGmTool:提升天龙八部单机版管理效率的5个核心解决方案

TlbbGmTool&#xff1a;提升天龙八部单机版管理效率的5个核心解决方案 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 一、价值定位&#xff1a;重新定义游戏管理工具的核心优势 1.1 三大独特价值优…...

手把手教你用C语言实现电网同步:从三相线电压到SRF-PLL的完整代码与调试

三相电网同步锁相环实战&#xff1a;从线电压采集到SRF-PLL的C语言实现精要 在电力电子和新能源并网领域&#xff0c;精确获取电网相位是实现逆变器同步运行的核心技术。本文将深入解析基于线电压输入的同步参考坐标系锁相环&#xff08;SRF-PLL&#xff09;完整实现方案&#…...

Mem Reduct内存管理实战指南:从问题诊断到系统优化

Mem Reduct内存管理实战指南&#xff1a;从问题诊断到系统优化 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 在现代…...

编写程序做书架分层标识牌,自动适配文字长度,输出:家庭/书店整理神器。

项目方案&#xff1a;基于Python的书架分层标识牌激光切割生成系统一、 实际应用场景描述想象一下这样的场景&#xff1a;你拥有一个摆放着数百本书的家庭书房&#xff0c;或者你经营着一家独立书店。为了快速找到书籍&#xff0c;你需要制作贴在书架隔板前沿或立在书架顶端的分…...

立体视觉入门避坑:为什么你的双目深度估计总是不准?从标定到匹配的5个常见误区

立体视觉实战指南&#xff1a;深度估计不准的五大技术陷阱与解决方案 刚完成双目标定的工程师们常会遇到这样的困境&#xff1a;明明按照教程一步步操作&#xff0c;生成的深度图却充满噪声&#xff0c;物体边缘模糊不清&#xff0c;甚至出现大面积空洞。这不是算法本身的缺陷&…...

协程设计原理与汇编实现:从原语到网络IO Hook

一、为什么需要协程&#xff1f;在高并发网络编程中&#xff0c;我们面临一个经典矛盾&#xff1a;同步编程简单但性能差&#xff0c;异步编程性能高但代码复杂。协程的出现&#xff0c;正是为了用同步的写法获得异步的性能。1.1 同步与异步的本质同步&#xff1a;串行执行&…...

如何安装Dr. Memory:Windows、Linux、Mac完整安装教程

如何安装Dr. Memory&#xff1a;Windows、Linux、Mac完整安装教程 【免费下载链接】drmemory Memory Debugger for Windows, Linux, Mac, and Android 项目地址: https://gitcode.com/gh_mirrors/dr/drmemory Dr. Memory是一款功能强大的内存调试工具&#xff0c;能够检…...