回覆列表
  • 1 # 無盡音源

    在實際的軟體開發過程中,我們需要多的環境:如開發環境、測試環境、沙箱環境、自動化環境、預發環境、生產環境……這麼多的環境要如何維護呢?是一臺機器部署一個應用,還是一臺機器部署多個應用?多個應用之前又要怎麼隔離呢?這時候就需要使用到虛擬化技術了。

    最早的虛擬化技術是虛擬機器,所謂虛擬機器(Virtual Machine)指透過軟體模擬的具有完整硬體系統功能的、執行在一個完全隔離環境中的完整計算機系統 。這個聽起來有些繞口,其實就是透過軟體的隔離,讓你的電腦能夠同步安裝多個完整的計算機系統,這裡說的軟體比較有名的就是VMWare和OpenStack,透過VMWare或OpenStack,我們在原來的電腦中模擬出一臺甚至多臺“子電腦”出來。這些子電腦可以是Mac、windows、linux中的任意系統、任意版本,只你軟體支援且你能找到映象。在“子電腦”裡,你可以和正常電腦一樣執行程式,例如開啟word。各個子電腦之間的軟體硬體都是相互隔離的,互不影響的。

    虛擬化有哪些優勢?

    虛擬機器能夠讓一臺機器像多臺機器一樣執行,這意味著您需要的伺服器更少,並且還可以最大限度地利用您擁有的伺服器。這種效率的提高能夠節省硬體、冷卻和維護成本。藉助虛擬化,我們可以在同一臺機器上執行多種型別的應用、桌面和作業系統。

    棄用虛擬機器

    但今天我們要說的是,我們要棄用虛擬機器,投入容器化的懷抱,為何?LXC,就是Linux容器虛擬技術(Linux container),它是Docker容器技術的基礎,Docker輕量級的虛擬化,虛擬機器雖然可以隔離出很多“子電腦”,但佔用空間更大,啟動慢。而容器技術恰好沒有這些缺點,它不需要虛擬出整個作業系統,只需要虛擬一個小規模的環境(類似“沙箱”)。

    傳統虛擬機器在硬體層面上實現虛擬化,需要有額外的虛擬機器管理應用和虛擬機器作業系統,而Docker容器是在作業系統層面上實現的虛擬化,直接利用本地主機的作業系統,因此更輕量。

    Docker容器本質上是宿主機上的一個程序。Docker 透過名稱空間實現了資源隔離,透過 cgroups實現了資源的限制,透過寫時複製機制(copy-on-write)實現了高效的檔案操作。能夠實現更快速的交付和部署;更高效的虛擬化;更輕鬆地遷移和擴充套件;更簡單的管理。

    舉個簡單的例子:傳統我們蓋房子需要木料、水泥、磚頭……,需要選好施工地,並請工人來進行一定時長的工作。等下次我們需要在一個新的地方重新蓋房子,就又要重新來一次。Docker將已經蓋好的房子,透過魔法揹包打包成映象,裡面只是房子模型,沒有任何的實際生活用品以保證輕量,等到了一個新的地方,我們只要取出揹包中的映象,房子就還原回來了,想要什麼房子就用什麼映象,實現“Buildonce,Runanywhere(搭建一次,到處能用)”。

  • 中秋節和大豐收的關聯?
  • 你好,沒有尿卻總想尿尿怎麼回事?