1. 程式人生 > >Docker筆記_初識虛擬化及容器

Docker筆記_初識虛擬化及容器

一.虛擬技術的發展

  傳統方式上,想要部署一個APP,首先需要一臺物理伺服器,然後在物理伺服器上安裝一個作業系統,最後才可以在作業系統上部署需要的APP. 這樣的方式存在著許多缺點,比如,部署時可能要配置各種環境,部署慢;成本高;硬體的資源浪費;難於遷移和擴充套件;可能會被限定硬體廠商.

                APP
               作業系統
               物理伺服器

  為了解決行業痛點,虛擬化技術出現了.虛擬化技術實際上就是在傳統的物理伺服器和作業系統上增加了一個Hypervisor, Hypervisor通過對物理資源(如CPU, 記憶體, 硬碟等)的虛擬化實現了上層APP與底層物理資源的隔離.在Hypervisor之上可以裝一些虛擬機器(VM), Hypervisor可以實現不同虛擬機器之間物理資源的限定和排程,從而使物理資源利用率最大化.虛擬技術的出現,可以一個物理機上部署多個APP,每個APP都執行在一個獨立的VM裡.

                  APP 

              APP
Guest Operating system Guest Operating system
                   VM               VM
                                Hypervisor
                                主作業系統
                                物理伺服器

 虛擬技術的優點:

  1.資源池:一個物理機的資源分配到了不同的虛擬機器裡;

  2.容易擴充套件:加物理機或加虛擬機器

  3.容易雲化:亞馬遜AMS, 阿里雲等

虛擬技術的侷限: 

  每一個VM都是一個完整的作業系統,需要給其分配資源,當VM數量增多時,作業系統本身消耗的資源勢必增多.

二.容器技術的出現

  促使容器技術出現的最重要的一個原因是,在完成一個APP時,開發人員所使用開發環境(開發語言,資料庫型別等)與測試及運維人員的測試運維環境的統一性.容器技術出現之前,測試或運維一個APP前,首先需要進行環境的搭建和配置,這通常是一件繁瑣浪費時間的事情.而容器技術的出現,可以很好的解決這個問題.容器(container)的英文翻譯是"集裝箱",容器技術實際上是一種標準化技術,即將不同的APP打包集裝到一個標準的集裝箱裡,使得標準化的APP可以在任何機器上執行,從而解決環境配置的痛點.

容器技術解決的問題:

  1.解決了開發和運維之間的矛盾

  2.在開發 (Developer) 和運維 (Operator) 之間搭建了一個橋樑,是實現 DevOps 的最佳解決方案

容器技術的特點:

  1.對軟體及其依賴進行標準化打包

  2.實現了應用之間的隔離,這個隔離可能沒有虛擬技術中的隔離好

  3.多個容器共享一個 OS Kernel (作業系統核心)

  4.可以執行在許多主流作業系統上

           Tomkat+Java+Debian             QL Server+.net+Ubuntu
                  Container                        Container
                                                 OS Kernel

容器和虛擬化的區別: 

  容器是APP層面的隔離,而虛擬化是物理資源層面的隔離.

        APP          APP
       Container         Container
               Docker
               Host OS
              Infrastructure
                            APP                         APP 
                        Guest OS                    Guest OS
                            VM                           VM
                                                     Hypervisor
                                                       Host OS
                Infrastructure
 

虛擬化+容器:

       Container        Container       Container        Container
                        Docker                        Docker
                      Guest OS                       Guest OS
        VM         VM
               Hypervisor
                                                        Host OS
               Infrastrcture

Docker是容器技術的一種實現, Docker的用途有:

  • 簡化配置
  • 整合伺服器
  • 程式碼流水線管理
  • 除錯能力
  • 提高開發效率
  • 多租戶
  • 隔離應用
  • 快速部署