Docker學習——初識Docker

1、起源

Docker 是 PaaS 提供商 dotCloud 開源的一個基於 LXC 的高級容器引擎,源代碼託管在 Github 上, 基於go語言並遵從Apache2.0協議開源。

Docker自2013年以來非常火熱,無論是從 github 上的代碼活躍度,還是Redhat在RHEL6.5中集成對Docker的支持, 就連 Google 的 Compute Engine 也支持 docker 在其之上運行。

2、虛擬化

在計算機中,虛擬化是一種資源管理技術,是將計算機的各種實體資源,如服務器,網絡,內存及存儲等抽象,轉換後呈現出來,打破實體結構間的不可分割的障礙,使用戶可以以比原本的組態更好的方式來利用這些資源。這些資源的新虛擬部署不受現有資源的架設方式、地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。

3、爲什麼要使用虛擬化

(1)高性能計算機:像天河等高性能計算機硬件資源很強大,但是如何能充分利用

(2)雲計算:利用一些老舊服務器組成一個集羣網絡,如何利用集羣網絡資源呢?--如何沒有虛擬化技術,就無法利用老舊的硬件構成的集羣網絡

4、Docker爲什麼會火起來(Docker誕生前的行業痛點)

傳統的開發流程

傳統的開發存在的問題

(1)資源利用效率低

(2)單物理機多應用無法有效隔離

(3)運維、部署不便

(4)測試、版本管理複雜

(5)遷移成本高

(6)傳統虛擬機VMWare,空間佔用大,啓動慢,十分笨重

Docker的核心思想

集裝箱!!!

 

docker設想是交付運行環境如同海運,OS如同一個貨輪,每一個在OS基礎上的軟件都如同一個集裝箱,用戶可以通過標準化手段自由組裝運行環境,同時集裝箱的內容可以由用戶自定義,也可以由專業人員製造。這樣,交付一個軟件,就是一系列標準化組件的集合的交付,如同樂高積木,用戶只需要選擇合適的積木組合,並且在最頂端署上自己的名字(最後一個標準化組件是用戶的app)。這也就是基於docker的PaaS產品的原型。

總結如下:

Docker相對於傳統虛擬機有如下優點

應用能更快速的交付和部署
傳統:一堆幫助文檔 ,安裝程序
Docker:打包鏡像,發佈測試,一鍵運行

更便捷的升級和擴縮容
使用了Docker之後。部署應用就像是搭積木
項目打包爲一個鏡像,服務器A!服務器B!

更簡單的系統運維
在容器化之後,我們的開發,還有測試環境都是高度一致的

更高效的計算資源利用
Docker是內核級的虛擬化,可以在一個物理機上運行很多的容器實例!服務器效能可以被壓榨到極致

 

5、Docker爲什麼比虛擬機快?

(1) Docker有着比虛擬機更少的抽象層,由於Docker不需要Hypervisor實現硬件資源虛擬化,運行在Docker容器上的程序直接使用的都是實際物理機的硬件資源,因此在Cpu、內存利用率上Docker將會在效率上有明顯優勢。

(2) Docker利用的是宿主機的內核,而不需要Guest OS,因此,當新建一個容器時,Docker不需要和虛擬機一樣重新加載一個操作系統,避免了引導、加載操作系統內核這個比較費時費資源的過程,當新建一個虛擬機時,虛擬機軟件需要加載Guest OS,這個新建過程是分鐘級別的,而Docker由於直接利用宿主機的操作系統則省略了這個過程,因此新建一個Docker容器只需要幾秒鐘。

  Docker容器 虛擬機(VM)
操作系統 與宿主機共享OS 宿主機OS上運行宿主機OS
存儲大小 鏡像小,便於存儲與傳輸 鏡像龐大(vmdk等)
運行性能 幾乎無額外性能損失 操作系統額外的cpu、內存消耗
移植性 輕便、靈活、適用於Linux 笨重、與虛擬化技術耦合度高
硬件親和性 面向軟件開發者 面向硬件運維者

 

 

6、Docker架構

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。Docker 容器通過 Docker 鏡像來創建。容器與鏡像的關係類似於面向對象編程中的對象與類。 

Docker 面向對象
容器 對象
鏡像

Docker採用 C/S架構 Docker daemon 作爲服務端接受來自客戶的請求,並處理這些請求(創建、運行、分發容器)。 客戶端和服務端既可以運行在一個機器上,也可通過 socket 或者RESTful API 來進行通信。

Docker daemon 一般在宿主主機後臺運行,等待接收來自客戶端的消息。 Docker 客戶端則爲用戶提供一系列可執行命令,用戶用這些命令實現跟 Docker daemon 交互。

7、Docker名詞解釋

鏡像(image):
    docker鏡像就好比是一個模板,可以通過這個模板來創建容器服務,tomcat鏡像===》run==》tomcat01
容器(container):
    Docker利用容器技術,獨立運行一個或者一組應用,通過鏡像來創建啓動,停止,刪除,基本命令
    目前就可以把這個容器理解爲就是一個簡易的linux系統,
倉庫(respository):
    倉庫就是存放鏡像的地方,倉庫分爲公有倉庫和私有倉庫,默認的地址是國外的Docker Hub
    阿里雲都有容器服務器,配置鏡像加速

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章