Docker 入门(1)虚拟化和容器

1 虚拟化

虚拟化是为一些组件(例如虚拟应用、服务器、存储和网络)创建基于软件的(或虚拟)表现形式的过程。它是降低所有规模企业的 IT 开销,同时提高其效率和敏捷性的最有效方式。

1.1 虚拟化用于程序跨平台兼容

要实现程序跨平台兼容的方法其实很简单,只要操作系统或者物理硬件所提供的接口调用方式一致,程序便不需要兼容不同硬件平台的接口,而只需要针对这一套统一的接口开发即可。

虚拟化技术正是通过其本身适配不同平台的硬件,而加以抽象成统一的接口,来实现程序跨平台运行这一目的的。

1.2 虚拟化用于资源管理

通过虚拟化技术来管理计算机资源的方式,不但让我们对计算机资源的控制变得更加灵活,也大幅提高了计算机资源的使用率。

虚拟化技术能够提高计算机资源的使用率,是指利用虚拟化,我们可以将原来程序用不到的一些资源拿出来,分享给另外一些程序,让计算机资源不被浪费。

虽然我们能够在操作系统里同时运行多个程序,但前提得是这些程序本身不存在冲突。这里的冲突体现在很多的方面,例如不同的程序同时使用了同一个端口;不同程序依赖于同一个工具库的不同版本;程序本身限制了同时开启的进程数等。虚拟化技术通过资源隔离的方式,无形地也可以把这些程序隔离在不同的虚拟环境中,既然虚拟环境不同,自然运行在不同环境中的程序就不会互相干扰或争抢资源了。

1.3 虚拟化的分类

  • 硬件虚拟化
    所谓硬件虚拟化,指的是物理硬件本身就提供虚拟化的支持。举个例子来说,某个平台的 CPU,能够将另外一个平台的指令集转换为自身的指令集执行,并给程序完全运行在那个平台上的感觉。例如Intel VT、AMD-V

  • 软件虚拟化
    而软件虚拟化则指的是通过软件的方式来实现虚拟化中关键的指令转换部分。依然用 CPU 的例子来说话,在软件虚拟化实现中,通过一层夹杂在应用程序和硬件平台上的虚拟化实现软件来进行指令的转换

1.4 平台虚拟化分类:

  1. 完全虚拟化:原来运行在物理硬件上的操作系统和软件,完全不用修改就可以直接运行在虚拟机中。

全虚拟化(FullVirtualization)也称为原始虚拟化技术,该模型使用虚拟机协调Guest操作系统和原始硬件,VMM在Guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理

  1. 半虚拟化:是一种修改Guest OS部分访问特权状态的代码以便直接与VMM交互的技术。

在虚拟客户操作系统中加入特定的虚拟化指令,通过这些指令可以直接通过Hypervisor层调用硬件资源,免除有hypervisor层转换指令的性能开销
半虚拟化需要Guest操作系统做一些修改,使Guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。

  1. 操作系统虚拟化:是一种轻量级的虚拟化技术,让内核通过创建多个虚拟的操作系统实例来隔离不同的进程,不同实例中的进程完全不了解对方的存在。这些实例也被称之为容器

image.png

1.5 虚拟机

一种叫虚拟机监控程序的软件会把资源与物理机分隔开,以便进行分区并专门用于虚拟机。通常来说就是通过一个虚拟机监视器 ( Virtual Machine Monitor ) 的设施来隔离操作系统与硬件或者应用程序和操作系统,以此达到虚拟化的目的。这个夹在其中的虚拟机监视器,常常被称为 Hypervisor。

当用户发出需要从物理环境中获取更多资源的虚拟机指令时,虚拟机监控程序就会将该请求转发到物理系统并将更改放到缓存中。

从作用上来看,虚拟机就像物理服务器,它会成倍放大应用依赖项和大量 OS 占用空间(而运行单个应用或微服务往往并不需要这么大的占用空间)造成的弊端。

image.png

2. 容器

所谓容器技术,指的是操作系统自身支持一些接口,能够让应用程序间可以互不干扰的独立运行,并且能够对其在运行中所使用的资源进行干预。由于应用程序的运行被隔离在了一个独立的运行环境之中,这个独立的运行环境就好似一个容器,包裹住了应用程序,这就是容器技术名字的由来

容器中包含了微服务或应用及运行所需的一切要素。容器中的所有内容都保存在镜像(一个基于代码且包含所有库和依赖项的文件)上。我们可以将这些文件视为 Linux 发行版的一个安装实例,因为镜像中包含 RPM 软件包和配置文件。由于容器是如此之小,因此通常会有数百个容器松散地耦合在一起,所以要使用容器编排平台(例如红帽 OpenShift 和 Kubernetes)来置备和管理它们。

3. 虚拟机 VS 容器

由于没有了虚拟操作系统和虚拟机监视器这两个层次,大幅减少了应用程序运行带来的额外消耗。

更准确的来说,所有在容器中的应用程序其实完全运行在了宿主操作系统中,与其他真实运行在其中的应用程序在指令运行层面是完全没有任何区别的。

image.png
相比虚拟机,容器最适合用于

  • 构建云原生应用
  • 封装微服务
  • 拓展 DevOps 或 CI/CD 实践
  • 在共享同一操作系统的多样化 IT 环境中移动可扩展的 IT 项目

与单个容器相比,虚拟机能够运行更多的操作,因而它们一直是(现在也是)封装单体式工作负载的惯用方式。但是,由于对操作系统、应用和库的依赖性,这种扩展功能也令虚拟机的可移植性大大降低。相比容器,虚拟机最适合用于

  • 存放传统的单体式工作负载
  • 隔离存在风险的开发周期
  • 置备基础架构资源(如网络、服务器和数据)
  • 在另一个操作系统内运行不同的操作系统(例如在 Linux 上运行 Unix)

参考资料

《开发者必备的 Docker 实践指南》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量子相干与量子纠缠_量子分类

量子相干与量子纠缠My goal here was to build a quantum deep neural network for classification tasks, but all the effort involved in calculating errors, updating weights, training a model, and so forth turned out to be completely unnecessary. The above circu…

三角函数式的化简

前言 为什么需要化简三角函数式? 一、什么是三角函数式的化简? 二、三角函数式的化简标准是什么? 三、三角函数式化简可能用到的变形: 弦切互化,1的代换,通分约分,配方展开,提取公因…

Python -- xlrd,xlwt,xlutils 读写同一个Excel

最近开始学习python,想做做简单的自动化测试,需要读写excel,然后就找到了xlrd来读取Excel文件,使用xlwt来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取excel是不能对其进行操作的&…

计算机工程师分级_这些是每个计算机工程师都应该知道的数字

计算机工程师分级In 2010, Jeff Dean from Google gave a wonderful talk at Stanford that made him quite famous. In it, he discussed a few numbers that are relevant to computing systems. Then Peter Norvig published those numbers for the first time on the inter…

leetcode 377. 组合总和 Ⅳ(dp)

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums [1,2,3], target 4 输出:7 解释&…

1.4- 定时任务总结之九句箴言

1.4定时任务之九句箴言九句箴言---- 不会九句箴言别做运维1.定时任务规则之前加注释2.使用脚本代替命令行制定定时任务3.定时任务中date命令%的特殊含义定时任务中,%表示回车 -----可以使用\转义4.运行脚本一定要用/bin/sh或sh脚本不必须有x权限5.定时任务中-命令或脚本的输出…

ubuntu 18.04 vi里面方向键变成abcd 处理办法

sudo apt-get remove vim-common sudo apt-get install vim 转载于:https://www.cnblogs.com/testing-BH/p/11506400.html

知识力量_网络分析的力量

知识力量The most common way to store data is in what we call relational form. Most systems get analyzed as collections of independent data points. It looks something like this:存储数据的最常见方式是我们所谓的关系形式。 大多数系统作为独立数据点的集合进行分析…

python里的apply,applymap和map的区别

apply,applymap和map的应用总结:apply 用在dataframe上,用于对row或者column进行计算;applymap 用于dataframe上,是元素级别的操作;map (其实是python自带的)用于series上,是元素级别的操作。如…

验证曲线和学习曲线_如何击败技术学习曲线的怪物

验证曲线和学习曲线Doing what I do for a living, which these days mostly involves creating technology books and courseware, I’m constantly learning new technologies. In a way, my new tech adventures are not much different than the ones most IT pros face, e…

234

234 转载于:https://www.cnblogs.com/Forever77/p/11509588.html

SCCM PXE客户端无法加载DP(分发点)映像

上一篇文章我们讲到了一个比较典型的PXE客户端无法找到操作系统映像的故障,今天再和大家一起分享一个关于 PXE客户端无法加载分发点映像的问题。具体的报错截图如下:从报错中我们可以看到,PXE客户端已经成功的找到了SCCM服务器,并…

Docker 入门(2)技术实现和核心组成

1. Docker 的技术实现 Docker 的实现,主要归结于三大技术: 命名空间 ( Namespaces )控制组 ( Control Groups )联合文件系统 ( Union File System ) 1.1 Namespace 命名空间可以有效地帮助Docker分离进程树、网络接口、挂载点以及进程间通信等资源。L…

marlin 三角洲_带火花的三角洲湖:什么和为什么?

marlin 三角洲Let me start by introducing two problems that I have dealt time and again with my experience with Apache Spark:首先,我介绍一下我在Apache Spark上的经历反复解决的两个问题: Data “overwrite” on the same path causing data l…

环境变量的作用

1. PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/ja…

WeWork通过向225,000个社区征税来拼命地从Meetup.com榨取现金

Update: A few hours after I published this article, Meetup quietly added a note to the top of their announcement. They have not tweeted or done anything else to publicize this note, but some people noticed it and shared it with me.更新:在我发布本…

eda分析_EDA理论指南

eda分析Most data analysis problems start with understanding the data. It is the most crucial and complicated step. This step also affects the further decisions that we make in a predictive modeling problem, one of which is what algorithm we are going to ch…

leetcode 897. 递增顺序搜索树(中序遍历)

给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 示例 1: 输入:root [5,3,6,2,4,null,8,1,null…

【一针见血】 JavaScript this

JavaScript this 指向一站式解决转载于:https://www.cnblogs.com/xueyejinghong/p/8403987.html

基于ssm框架和freemarker的商品销售系统

项目说明 1、项目文件结构 2、项目主要接口及其实现 (1)Index: 首页页面:展示商品功能,可登录或查看商品详细信息 (2)登录:/ApiLogin 3、dao层 数据持久化层,把商品和用户…