初始Docker

概述:

容器,作为云原生技术的重要组成部分,与虚拟机一样,均属于虚拟化技术的范畴。然而,容器技术以其独特的优势,在虚拟化领域中脱颖而出。与虚拟机不同,容器能够摆脱操作系统的束缚,实现更为轻量级的虚拟化,其资源消耗显著降低,且具备快速启动的特性。

容器的核心特点

容器也完美契合了虚拟化技术的四大核心原则:分区、隔离、封装、以及相对硬件独立。

image.png

  • 分区:确保容器内部的应用能够独享一套硬件资源,互不干扰。

  • 隔离:通过逻辑隔离机制,建立多个容器间的屏障,防止相互影响。

  • 封装:将整个容器封装在独立于物理硬件的文件集中,便于管理和迁移。

    image.png

  • 独立:容器可在相同的Linux内核上运行,不受限于特定硬件,展现了高度的灵活性。

与虚拟机的异同

虽然容器与虚拟机在虚拟化目标上相似,但实现方式却大相径庭。容器同样需要类似Hypervisor的平台支持,但这一平台在容器领域被称为“容器引擎”,其中最知名的包括Docker、Podman、iSula等。特别是Docker,已成为本次的主要讲解对象。然而,值得注意的是,近年来政策变化(如Docker Hub的访问限制)及操作系统更新(如CentOS 7停止更新)对Docker的安装与使用产生了一定影响,具体安装步骤后续我们会展开。

跟虚拟机的异同表如下:

image.png

容器的秒级启动能力

与虚拟机相比,容器在隔离的同时,还实现了秒级启动的壮举,极大地提升了应用的部署与响应速度。

image.png

为应用量身打造的虚拟化基础

容器是专为应用设计的虚拟化基础设施。它允许开发者将应用及其依赖项打包成一个独立的、可移植的容器,内部资源仅服务于特定应用,从而实现了高度的资源优化。相比之下,虚拟机则旨在提供一个通用的资源环境,满足多种应用的需求。

容器的生命周期管理

容器能够像虚拟机一样,完成从创建、运行到销毁的整个生命周期管理过程,为应用的部署与维护提供了极大的便利。

容器的虚拟化实现机制

容器的虚拟化并非通过传统的Hypervisor进行硬件模拟,而是依赖于容器引擎通过Namespace和Cgroup等机制对应用进行“欺骗”。具体而言,Cgroup作为进程资源限制的手段,确保容器内的应用不会过度消耗系统资源;而Namespace则实现了进程、网络、挂载点等系统资源的隔离,为容器内的应用创造了一个看似独立的操作系统环境。这种操作系统级别的虚拟化,使得容器在轻量级、启动速度、资源消耗等方面展现出显著优势,逐渐成为市场上的热门选择。

image.png

Cgroup也叫控制组本质上就是一种进程资源的一种限制手段,比如限制进程之能够使用多少的核心跟内存资源。控制组是Linux内核提供的另一种机制,用于限制、记录和隔离进程组所使用的物理资源(如CPU、内存、磁盘I/O等)。通过为容器分配特定的控制组,容器引擎可以限制容器使用的资源量,确保一个容器的资源使用不会影响到宿主机上的其他容器或进程。

命名空间是Linux内核提供的一种机制,用于将系统资源(如进程ID、网络接口、挂载点等)隔离成多个虚拟环境。每个容器都可以有自己的命名空间,从而实现进程、网络、挂载点等的隔离。例如,容器A中的进程ID 1可能对应宿主机上的一个完全不同的进程ID,而容器B中的进程ID 1又对应另一个进程ID。这种隔离使得容器内的应用感觉就像是在一个独立的操作系统上运行(但是实际上是共享操作系统)。

这里的“欺骗”实际上是指容器技术通过命名空间和控制组等机制,对容器内的应用进行隔离和限制,使得应用感觉像是在一个独立的操作系统环境中运行,而实际上它们是在共享同一个宿主机的操作系统内核。这种方式实现了操作系统级别的虚拟化,与传统的虚拟机技术相比,容器技术更加轻量级,启动和运行速度更快,资源消耗也更少,开始备受市场上的青睐。

图例子中呈现的主要nginx容器的内部,发现之后nginx应用所需要的软件包而已,其余的都没有,甚至连基本的系统命名大多数都不集成。

image.png

容器的缺点:

容器自身的实现的机制就决定了容器自身也会存在缺陷以及缺点:

安全性

容器引擎的安全漏洞:容器引擎(如Docker)本身可能存在安全漏洞。CVE(常见漏洞和披露)已经记录了多项与Docker相关的安全漏洞,包括权限提升和信息泄露等。这些漏洞可能会被攻击者利用,对容器内部的应用或宿主机造成威胁。

** 镜像安全**:容器镜像的安全性直接影响到容器的安全性。镜像可能包含基础软件的漏洞、恶意脚本或被篡改的代码。例如,Docker Hub等镜像仓库中的镜像可能由个人开发者上传,质量参差不齐,甚至可能包含恶意漏洞。

** 内核隔离性不足**:尽管Linux内核的Namespace技术提供了进程、网络、挂载点等资源的隔离,但仍有部分关键内容没有被完全隔离。例如,/proc、/sys等目录可能泄露宿主机上的关键信息,让攻击者有机会利用这些信息对宿主机发起攻击。此外,一旦内核的Namespace被突破,攻击者可能直接获得对宿主机的控制权。

隔离性:

** 共享内核:**所有容器共享宿主机的操作系统内核。这意味着容器之间的隔离性依赖于内核的安全性和隔离机制的有效性。如果内核存在漏洞或隔离机制被绕过,容器之间的隔离性将被打破。

** 命名空间的不完全隔离**:如前所述,Linux内核的Namespace技术虽然提供了多种资源的隔离,但仍有部分关键内容未被完全隔离。这限制了容器在隔离性方面的表现。

** 容器逃逸风险**:由于隔离性的不足,攻击者可能利用容器内的漏洞或不当配置实现容器逃逸,即突破容器的隔离边界,对宿主机或其他容器 造成威胁。

资源限制

** 依赖宿主机资源**:容器直接运行在宿主机的操作系统内核上,共享宿主机的CPU、内存、磁盘等资源。因此,容器的资源限制能力依赖于宿主机资源的分配和管理。

** Cgroup的限制**:虽然Cgroup(控制组)机制可以对容器的资源使用进行限制和记录,但这种限制是在操作系统层面实现的,而非硬件层面。这意味着在极端情况下,如果容器消耗过多资源,仍可能对宿主机的性能造成影响。

** 资源竞争**:在宿主机上运行多个容器时,容器之间可能会相互竞争资源。如果没有适当的资源限制和管理策略,可能会导致资源使用不公平或资源耗尽的情况。

image.png

总的来说,容器技术是一种高级的应用打包与部署解决方案,它不仅仅是虚拟化的一种形式,更是应用分发与部署的革命性突破。容器能够将应用程序及其依赖项、必要的系统库文件等所有必要元素封装在一起,形成一个可移植的单元。这意味着,无论是在开发、测试还是生产环境中,只要环境支持容器运行,就可以直接部署并运行该容器,无需进行额外的配置或修改。

传统的应用部署过程复杂且耗时,涉及到虚拟机的申请、操作系统的安装、网络配置、依赖管理、环境变量设置等多个步骤。而容器技术通过预制的容器镜像,简化了这些流程。开发者只需关注应用的开发与测试,将应用及其依赖项打包成容器镜像后,运维人员即可轻松地在任何支持容器的平台上部署运行,极大地提高了部署效率和灵活性。

容器的运行依赖于容器引擎,它是容器技术架构中的核心组件。容器引擎负责管理容器的生命周期,包括创建、运行、停止和删除等操作。类似于虚拟机需要Hypervisor来支持运行,容器也需要容器引擎来提供运行环境和必要的管理功能。在众多容器引擎中,Docker因其易用性、强大的功能和丰富的生态系统而广受欢迎,但市场上也存在其他优秀的容器引擎供选择。

到了这里相比现在对容器有了一个更清晰的了解了吧^_^,如果想学习得更多,可以来我的知识星球学习哈。​​​​​​​

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

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

相关文章

MATLAB函数,用于计算平均误差、误差最大值、标准差、均方误差、均方根误差

文章目录 源代码使用示例:计算公式1. 平均误差 (Mean Error, ME)2. 误差最大值 (Maximum Error, ME)3. 标准差 (Standard Deviation, SD)4. 均方误差 (Mean Squared Error, MSE)5. 均方根误差 (Root Mean Squared Error, RMSE) 总结 以下是一个MATLAB函数,用于计算常…

Axure设计之左右滚动组件教程(动态面板)

很多项目产品设计经常会遇到左右滚动的导航、图片展示、内容区域等,接下来我们用Axure来实现一下左右滚动的菜单导航。通过案例我们可以举一反三进行其他方式的滚动组件设计,如常见的上下滚动、翻页滚动等等。 一、效果展示: 1、点击“向左箭…

软考攻略/超详细/系统集成项目管理工程师/基础知识分享19

7.1 系统集成基础(掌握) 系统集成一般可以分为软件集成、硬件集成、网络集成、数据集成和业务应用集成等。 1、系统集成概念理解 软硬件系统集成是一种系统的思想和方法,它虽然涉及软件和硬件等技术问题,但绝不仅仅是技术问题 软硬…

数据库Redis篇

系列文章目录 第一章 C/C语言篇第二章 计算机网络篇第三章 操作系统篇第四章 数据库MySQL篇第五章 数据库Redis篇第六章 场景题/算法题第七篇 常见HR问题篇 本系列专栏:点击进入 后端开发面经 关注走一波 秋招阶段,面过很多大中小厂,积攒了…

SpringAOP技术

目录 一、概念引入 1.引入依赖 2.工具类 3.实体类 4.持久层实现类 5.业务层实现类 6.配置文件 7.测试类 8.运行 查看数据库: 9.现在如果转账过程中出现异常 AccountServiceImpl(模拟异常) 再运行: 查看数据库: 10.现在做事务…

从富文本窥探苹果的代码秘密

从富文本窥探苹果的代码秘密 背景 在我们的业务场景下,为突出诸如 “利益点”和“利率” 等特性以推动订单成交,引入了 “富文本” 这一概念。富文本具备丰富格式的文本展示与编辑功能。然而,恰是由于富文本具有 “多样式”“复杂排版” 等特…

恒创科技:如何知道一台服务器能承载多少用户?

如何知道一台服务器能承载多少用户?其实服务器承载能力并非一个单一固定的数值,而是由多种因素共同决定的动态指标,所以想知道能承载的访客量,我们要先搞清楚究竟有哪些因素会影响服务器承载访客的数量。 影响服务器承载访客的因素&#xff…

vue3配置eslint代码规划和prettier自动格式化

eslint 安装依赖:npm install -D eslint/create-config初始化:npx eslint --init初始化后会在项目中自动创建eslint.config.js文件,把以下内容复制粘粘替换 import globals from "globals"; import pluginJs from "eslint/j…

6个步骤让你快速学会甘特图的制作

在项目管理中,一个清晰、详细的进度表格和进度计划表是确保项目顺利进行的重要工具。它们不仅帮助团队成员了解各自的任务和责任,还能有效监控项目的进展,及时发现并解决问题。 制作项目进度表格和制定项目进度计划表是项目管理中的关键步骤…

蒙特卡洛方法(MC Basic算法例子)

本文章中使用的算法和例子来源于bilibili中西湖大学赵世钰老师的【强化学习的数学原理】课程。网址:第5课-蒙特卡洛方法(MC Basic算法例子)_哔哩哔哩_bilibili 目录 一、任务目标 二、细节分析 三、代码演示 一、任务目标 1、初始的策略已…

数理统计(第4章第1节:1元方差分析)

目录 引例 基本概念 1元方差分析的数学模型 ​编辑离差平方和​编辑​编辑​编辑​编辑​编辑 单因子方差分析的假设检验​编辑 1元方差分析表 例子 引例 基本概念 1元方差分析的数学模型 离差平方和 单因子方差分析的假设检验 1元方差分析表 例子

Python酷库之旅-第三方库Pandas(192)

目录 一、用法精讲 891、pandas.Index.nunique方法 891-1、语法 891-2、参数 891-3、功能 891-4、返回值 891-5、说明 891-6、用法 891-6-1、数据准备 891-6-2、代码示例 891-6-3、结果输出 892、pandas.Index.value_counts方法 892-1、语法 892-2、参数 892-3、…

光控资本:普通股东、控股股东、大股东、实际控制人都是什么意思?

1、一般股东 一般股东是指持有公司一般股股份的出资者。一般股是指在公司的经营管理和盈利及财产的分配上享有一般权力的股份。 一般股的权力: 1、获得股利的权力。一般股股东在股市付出完债息、优先股股息后,能够获得股利,具体有多少要看…

SELS-SSL/TLS

一、了解公钥加密(非对称加密) 非对称加密中,用于加密数据的密钥与用于解密数据的密钥不同。私钥仅所有者知晓,而公钥则可自由分发。发送方使用接收方的公钥对数据进行加密,数据仅能使用相应的私钥进行解密。 你可以将…

openfoam中生成的3d案例提取得到slice后的2d案例

问题: 由于前期准备做3d的案例,并且模拟也比较费时间,现在生成了几十份3d的数据,但是现在只想要2d的数据来演示,该如何提取或者转换呢? 解决方法: 1.说明图片中的每个2d视图的points都是恒定不…

【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)

2024年人机交互与虚拟现实国际会议(HCIVR 2024) 2024 International Conference on Human-Computer Interaction and Virtual Reality 官方信息 会议官网:www.hcivr.org 2024 International Conference on Human-Computer Interaction and …

计算机网络 -- HTTP 协议详解

根据以往的内容我们可以得知,大多数网络协议一共有五层标准,今天我们将 探索 应用层的 HTTP 协议。 一 什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。 HTTP 协议 ,全称超文本传输协议 &#…

算法【Java】—— 动态规划之斐波那契数列模型

动态规划 动态规划的思路一共有五个步骤: 状态表示:由经验和题目要求得出,这个确实有点抽象,下面的题目会带大家慢慢感受状态标识状态转移方程初始化:避免越界访问 dp 表,所以在进行填表之前我们要预先填…

kafka使用指南

文章目录 前言特点架构一、zookeeper安装配置二、kafka安装配置三、快去试一下吧!下一章:kafka命令之分区接入创建删除 前言 随着大数据时代的到来,高吞吐量的分布式发布订阅消息系统kafka得到了极大的应用,它具有高吞吐量、 特点 高吞吐量…

Windows 服务器中用户的分类

Windows 服务器中用户的分类 本地用户(只能在本地登录)如果你的服务器升级为域成员服务器,即刻失去本地服务。 漫游用户(域用户就是漫游用户,可用在域内的任何一个设备上、且在权限允许的范围内进行登录和资源使用。 …