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.pswp.cn/news/391311.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391311.shtml
英文地址,請注明出處:http://en.pswp.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層 數據持久化層,把商品和用戶…