Docker的出現

2010年,幾個搞IT的年輕人,在美國舊金山成立了一家名叫“dotCloud”的公司。這家公司主要提供基於PaaS的雲計算技術服務。就是和LXC(Linux container)有關的容器技術。後來改名為——Docker

微服務之Docker

一款產品從開發到上線,從操作系統,到運行環境,再到應用配置。作為開發+運維之間的協作我們需要關心很多東西,這也是很多互聯網公司都不得不面對的問題,特別是各種版本的迭代之後,不同版本環境的兼容,對運維人員都是考驗

Docker之所以發展如此迅速,也是因為它對此給出了一個標準化的解決方案。

Docker是開發人員和系統管理員 使用容器開發,部署和運行應用程序的平臺。使用Linux容器部署應用程序稱為容器化。容器不是新的,但它們用於輕鬆部署應用程序。

容器化越來越受歡迎,因為容器是:

  • 靈活:即使是最複雜的應用也可以集裝箱化。
  • 輕量級:容器利用並共享主機內核。
  • 可互換:您可以即時部署更新和升級。
  • 便攜式:您可以在本地構建,部署到雲,並在任何地方運行。
  • 可擴展:您可以增加並自動分發容器副本。
  • 可堆疊:您可以垂直和即時堆疊服務。

Docker的理念

Docker是基於Go語言實現的雲開源項目。

Docker的主要目標是“Build,Ship and Run Any App,Anywhere”,也就是通過對應用組件的封裝、分發、部署、運行等生命週期的管理,使用戶的APP(可以是一個WEB應用或數據庫應用等等)及其運行環境能夠做到“一次封裝,到處運行”。

Linux 容器技術的出現就解決了這樣一個問題,而 Docker 就是在它的基礎上發展過來的。將應用運行在 Docker 容器上面,而 Docker 容器在任何操作系統上都是一致的,這就實現了跨平臺、跨服務器。只需要一次配置好環境,換到別的機子上就可以一鍵部署好,大大簡化了操作

虛擬機時代

虛擬機(virtual machine)就是帶環境安裝的一種解決方案。

它可以在一種操作系統裡面運行另一種操作系統,比如在Windows 系統裡面運行Linux 系統。應用程序對此毫無感知,因為虛擬機看上去跟真實系統一模一樣,而對於底層系統來說,虛擬機就是一個普通文件,不需要了就刪掉,對其他部分毫無影響。這類虛擬機完美的運行了另一套系統,能夠使應用程序,操作系統和硬件三者之間的邏輯不變。

虛擬機的缺點:

①.資源佔用多 ②.冗餘步驟多 ③.啟動慢

容器新時代

由於前面虛擬機存在這些缺點,Linux 發展出了另一種虛擬化技術:Linux 容器(Linux Containers,縮寫為 LXC)。

Linux 容器不是模擬一個完整的操作系統,而是對進程進行隔離。有了容器,就可以將軟件運行所需的所有資源打包到一個隔離的容器中。容器與虛擬機不同,不需要捆綁一整套操作系統,只需要軟件工作所需的庫資源和設置。系統因此而變得高效輕量並保證部署在任何環境中的軟件都能始終如一地運行。

比較了 Docker 和傳統虛擬化方式的不同之處:

*傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;

*而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更為輕便。

*每個容器之間互相隔離,每個容器有自己的文件系統 ,容器之間進程不會相互影響,能區分計算資源。

微服務之Docker

相比之下,虛擬機(VM)運行一個完整的“客戶”操作系統,通過虛擬機管理程序對主機資源進行虛擬訪問。通常,VM提供的環境比大多數應用程序需要的資源更多。

對比傳統虛擬機總結

微服務之Docker

開發/運維一體化(DevOps)

  • 更快速的應用交付和部署

傳統的應用開發完成後,需要提供一堆安裝程序和配置說明文檔,安裝部署後需根據配置文檔進行繁雜的配置才能正常運行。Docker化之後只需要交付少量容器鏡像文件,在正式生產環境加載鏡像並運行即可,應用安裝配置在鏡像裡已經內置好,大大節省部署配置和測試驗證時間。

  • 更輕鬆的遷移和擴展

隨著微服務架構和Docker的發展,大量的應用會通過微服務方式架構,應用的開發構建將變成搭樂高積木一樣,每個Docker容器將變成一塊“積木”,應用的升級將變得非常容易。當現有的容器不足以支撐業務處理時,可通過鏡像運行新的容器進行快速擴容,使應用系統的擴容從原先的天級變成分鐘級甚至秒級。

  • 更簡單的系統運維

應用容器化運行後,生產環境運行的應用可與開發、測試環境的應用高度一致,容器會將應用程序相關的環境和狀態完全封裝起來,不會因為底層基礎架構和操作系統的不一致性給應用帶來影響,產生新的BUG。當出現程序異常時,也可以通過測試環境的相同容器進行快速定位和修復。

  • 更高效的計算資源利用

 Docker是內核級虛擬化,其不像傳統的虛擬化技術一樣需要額外的Hypervisor支持,所以在一臺物理機上可以運行很多個容器實例,可大大提升物理服務器的CPU和內存的利用率

相關推薦

推薦中...