書名: Docker技術入門與實戰(第3版)作者名: 楊保華 戴王劍 曹亞侖本章字數: 969字更新時間: 2018-11-08 18:34:03
1.3 Docker與虛擬化
虛擬化(virtualization)技術是一個通用的概念,在不同領域有不同的理解。在計算領域,一般指的是計算虛擬化(computing virtualization),或通常說的服務器虛擬化。維基百科上的定義如下:
“在計算機技術中,虛擬化是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換后呈現出來,打破實體結構間的不可切割的障礙,使用戶可以用比原本的組態更好的方式來應用這些資源。”
可見,虛擬化的核心是對資源的抽象,目標往往是為了在同一個主機上同時運行多個系統或應用,從而提高系統資源的利用率,并且帶來降低成本、方便管理和容錯容災等好處。
從大類上分,虛擬化技術可分為基于硬件的虛擬化和基于軟件的虛擬化。其中,真正意義上的基于硬件的虛擬化技術不多見,少數如網卡中的單根多IO虛擬化(Single Root I/O Virtualization and Sharing Specification, SR-IOV)等技術,也超出了本書的討論范疇。
基于軟件的虛擬化從對象所在的層次,又可以分為應用虛擬化和平臺虛擬化(通常說的虛擬機技術即屬于這個范疇)。前者一般指的是一些模擬設備或諸如Wine這樣的軟件,后者又可以細分為幾個子類:
? 完全虛擬化。虛擬機模擬完整的底層硬件環境和特權指令的執行過程,客戶操作系統無須進行修改。例如IBM p和z系列的虛擬化、VMware Workstation、VirtualBox、QEMU等;
? 硬件輔助虛擬化。利用硬件(主要是CPU)輔助支持(目前x86體系結構上可用的硬件輔助虛擬化技術包括Intel-VT和AMD-V)處理敏感指令來實現完全虛擬化的功能,客戶操作系統無須修改,例如VMware Workstation, Xen, KVM;
? 部分虛擬化。只針對部分硬件資源進行虛擬化,客戶操作系統需要進行修改。現在有些虛擬化技術的早期版本僅支持部分虛擬化;
? 超虛擬化(paravirtualization)。部分硬件接口以軟件的形式提供給客戶機操作系統,客戶操作系統需要進行修改,例如早期的Xen;
? 操作系統級虛擬化。內核通過創建多個虛擬的操作系統實例(內核和庫)來隔離不同的進程。容器相關技術即在這個范疇。
可見,Docker以及其他容器技術都屬于操作系統虛擬化這個范疇,操作系統虛擬化最大的特點就是不需要額外的supervisor支持。Docker虛擬化方式之所以有眾多優勢,跟操作系統虛擬化技術自身的設計和實現是分不開的。
圖1-2比較了Docker和常見的虛擬機方式的不同之處。

圖1-2 Docker和傳統的虛擬化方式的不同之處
傳統方式是在硬件層面實現虛擬化,需要有額外的虛擬機管理應用和虛擬機操作系統層。Docker容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,因此更加輕量級。
- 程序員修煉之道:程序設計入門30講
- Java程序設計實戰教程
- Visual FoxPro程序設計教程(第3版)
- Raspberry Pi Networking Cookbook(Second Edition)
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- Instant Zepto.js
- Learning Flask Framework
- Python網絡爬蟲從入門到實踐(第2版)
- UI智能化與前端智能化:工程技術、實現方法與編程思想
- Banana Pi Cookbook
- The DevOps 2.4 Toolkit
- ADI DSP應用技術集錦
- 信息技術應用基礎
- Unity Game Development Scripting
- Nginx Lua開發實戰