1. 程式人生 > >Docker實踐(一)

Docker實踐(一)

Docker是一款以容器虛擬化技術為基礎的軟體。

什麼是虛擬化技術

虛擬化技術是一種將計算機物理資源進行抽象、轉換為虛擬的計算機資源提供給程式使用的技術。常見的計算機資源包括CPU、記憶體、硬碟儲存、網絡卡等。通過虛擬化技術來管理計算機資源,不但能對計算機資源的控制變得更加靈活,也大幅提高了計算機資源的使用率。

虛擬化的分類

所謂虛擬化的分類,其實主要指的是在實現虛擬化的方式上的區別。主要有硬體虛擬化和軟體虛擬化兩大類。

所謂硬體虛擬化,指的是物理硬體本身就提供虛擬化的支援。比如,某些CPU 能夠自身模擬裂變,讓程式或者作業系統認為存在多個 CPU,進而能夠同時執行多個程式或者作業系統。

軟體虛擬化則是通過軟體的方式來實現虛擬化中關鍵的指令轉換部分,主要方式是通過一層夾雜在應用程式和硬體平臺上的虛擬化實現軟體來進行指令的轉換。也就是說,應用程式向作業系統或者物理硬體發出的指令不是當前硬體平臺所支援的指令,而是轉換過後的。

在實際應用場景中,虛擬化還能進行更細化的分類,例如:

平臺虛擬化:在作業系統和硬體平臺間搭建虛擬化設施,使得整個作業系統都執行在虛擬後的環境中。

應用程式虛擬化:在作業系統和應用程式間實現虛擬化,只讓應用程式執行在虛擬化環境中。

記憶體虛擬化:將不相鄰的記憶體區,甚至硬碟空間虛擬成統一連續的記憶體地址。

桌面虛擬化:讓本地桌面程式利用遠端計算機資源執行,達到控制遠端計算機的目的。

虛擬機器

虛擬機器,通常是通過一個虛擬機器監視器 ( Virtual Machine Monitor ) 的設施來隔離作業系統與硬體或者應用程式和作業系統,以此達到虛擬化的目的。這個夾在其中的虛擬機器監視器,常常被成為 Hypervisor。(來自https://juejin.im 掘金)

虛擬機器技術得益於 Hypervisor 的加持,使得應用程式或者作業系統可以在無任何修改的情況下執行在另一平臺上,但其有一個致命的缺陷,就是所有的指令都必須經過虛擬機器監視器的處理,這也就意味著虛擬機器的效能是低下的。所以虛擬機器不僅僅是Hypervisor加持,還有硬體輔助虛擬化的應用。

容器技術

所謂容器技術,指的是作業系統自身支援一些介面,能夠讓應用程式間可以互不干擾的獨立執行,並且能夠對其在執行中所使用的資源進行干預。由於應用程式的執行被隔離在了一個獨立的執行環境之中,就好似一個容器,包裹住了應用程式,這也是容器技術名字的由來。

虛擬機器 VS 容器