Docker 01 概述
Docker為什麼會出現
開發中的困擾
在日常開發中,想必都有這個場景:
測試:產品發版後又出問題了。
運維:我是按照開發給的包部署的,我排查下。
開發:我本地沒問題的呀。
一款產品,開發和生產兩套環境,運維人員環境配置費時費力,且很容易出現問題。
且出現問題後,開發人員和運維人員排查問題都是十分痛苦的,因為一個產品往往涉及到諸多環境,產生影響的因素實在太多。
尋求解決
這時候不禁會想,要是開發人員能夠把程式碼和環境一塊提供,運維人員拿來就直接執行,這個問題就迎刃而解了。
這就是所謂開發即運維,既能保證系統穩定性,也能提高部署效率。
為解決這一問題,Docker 橫空出世!
Docker的歷史
2010年,幾個搞 IT 的人,在美國成立一家公司 dotCloud。
一開始他們是做一些 PaaS 的雲端計算服務。
他們將自己的容器化技術命名為 Docker。
Docker 基於 Go 語言開發。
Docker 剛剛誕生的時候,並沒有引起行業的注意,這也導致 dotCloud 快要經營不下去。
為了公司能生存,他們決定開源,以尋求更多的關注。
2013 年,創始人將 Docker 開源,沒想到一下子爆火!剛開源的時候,每個月都會更新一個版本。
於是,2014 年 4 月 9 日,Docker 1.0 釋出。
Docker介紹
Docker 是一個開源的應用容器引擎。
Docker 的思想來自於集裝箱,彼此之間隔離。
Docker 通過隔離機制,可以將伺服器利用到極致。
Docker 容器完全使用沙箱機制,相互之間不會有任何介面。
Docker結構
-
映象(image):Docker 映象好比一個模板,可以通過這個模板來建立容器(container),一個映象可以建立多個容器。
-
容器(container):容器可以理解為一個簡易的系統。
-
倉庫(repository):存放映象的地方。
Docker和虛擬機器的區別
Docker所使用的容器化技術本質上屬於虛擬化技術。
提到虛擬化技術,最有名的就是虛擬機器技術。
虛擬機器原理示意圖
它有以下明顯的缺點:
-
資源佔用多。啟動虛擬機器非常佔記憶體,對電腦資源有不小的佔用。
-
冗餘步驟多。啟動虛擬機器後,還需要進行一些步驟才能進入系統,效率比較低。
-
啟動很慢。由於虛擬機器是虛擬化一整個系統,其啟動時間會比較緩慢,一般都需要幾分鐘。
容器化技術原理示意圖
由此可以看出,它不是模擬的完整的作業系統,而是基於作業系統封裝成了一小個執行環境。
區別
傳統虛擬機器 | Docker | |
---|---|---|
虛擬內容 | 硬體 + 完整的作業系統 + 軟體 | APP + LIB |
大小 | 笨重,通常幾個 G | 輕便幾個 M 或 KB |
啟動速度 | 慢,分鐘級 | 快,秒級 |
本文來自部落格園,作者:程式航,轉載請註明原文連結:https://www.cnblogs.com/codesail/p/15650316.html