1. 程式人生 > 其它 >逐步深入Docker(一)

逐步深入Docker(一)

Docker

Docker的前身是LXC Linux Container,擁有自己獨立的空間、程序和網路,可以在一臺主機部署多個Service Container,將作業系統的資源虛擬化。

Docker實現了對應用的封裝、部署、執行的生命週期管理,只要在glibc的環境下,都可以執行。

Docker和LXC是什麼關係?

Docker整合自LXC,並在其基礎上擴充套件了更強大的功能。

什麼是Docker?

Docke是一款開源應用容器引擎,基於Go語言開發。

Docker可以讓開發者打包一個應用和它的依賴到一個輕量級、可移植的容器中,然後釋出到任何流行的Linux伺服器中,也可以實現虛擬化。

Docker完全使用沙箱機制,相互之間沒有介面且開銷率極低。

Docker的特點:

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

映象(image)

docker映象就是一個只讀模板,比如一個映象可以包含一個完整的centos,裡面僅安裝apache和使用者的其他應用,映象可以用來建立docker容器,另外docker提供了一個很簡單的機制來建立映象和更新現有的映象,使用者甚至可以直接從其他人那裡下載一個已經做好的映象來直接使用。

容器(container)

docker通過容器來執行應用,容器是映象建立的執行例項,它可以被啟動,開始、停止、刪除、每個容器都是互相隔離的,保證平臺的安全,可以把容器看做是個簡易版的linux環境(包括root使用者許可權、映象空間、使用者空間和網路空間等)和執行在其中的應用。

倉庫(repository)

倉庫是集中儲存映象檔案的地方,registry是倉庫主從伺服器,實際上倉庫主從伺服器上存放著多個倉庫,每個倉庫中又包含了多個映象,每個映象有不同的標籤,倉庫分為兩種,公有倉庫和私有倉庫,最大的公有倉庫是docker Hub,存放了數量龐大的映象供使用者下載,國內有docker pool,這裡倉庫的概念與git類似,registry可以理解為github這樣的託管服務。

通過映象啟動一個容器,一個映象是一個可執行的包,其中包含應用的程式碼、執行時間、庫、環境變數和配置檔案。

容器是映象的執行例項,當執行時可以用命令檢視執行狀態和程序。

容器在本機上執行,並與其他容器共用一個核心,有一個獨立執行的程序,不與其他應用搶佔記憶體,非常輕量。

Docker與OpenStack比較

類別 Docker OpenStack
部署難度 非常簡單 元件多,部署複雜
啟動速度 秒級 分鐘級
執行效能 和物理系統幾乎一致 VM會佔用一些資源
映象體積 映象MB級別 虛擬機器映象GB級別
管理效率 關鍵簡單 元件相互依賴,管理複雜
隔離性 隔離性高 徹底隔離
可管理性 單程序 完整的管理程序
網路連線 比較弱 藉助neutron可以靈活管理各元件的網路

對各崗位的優勢

面向產品:產品交付

面向開發:簡化環境配置

面向測試:多版本測試

面向運維:環境一致性

面向架構:自動化擴容(微服務)

應用不用擔心執行環境的問題,所有伺服器都是自動分配容器,自動部署,自動執行,自動擴容。

理論上只要伺服器配置足夠,就不用擔心,磁碟,CPU和記憶體問題。

自動遷移、可以製作映象,隨時都可以恢復。