Docker系列課程01-Docker簡介

eacdy0000發表於2018-02-02

原文:http://www.itmuch.com/docker/01-docker-summary/

1.1 Docker簡介

Docker是一個開源的容器引擎,它可以幫助我們更快地交付應用。Docker可將應用程式和基礎設施層隔離,並且能將基礎設施當作程式一樣進行管理。使用Docker,可更快地打包、測試以及部署應用程式,並可減少從編寫到部署執行程式碼的週期

TIPS

(1) Docker官方網站:https://www.docker.com/

(2) Docker GitHub:https://github.com/docker/docker

1.2 版本與迭代計劃

近日,Docker釋出了Docker 17.06。進入Docker 17時代後,Docker分成了兩個版本:Docker EE和Docker CE,即:企業版(EE)和社群版(CE)。

1.2.1 版本區別

Docker EE(企業版)

Docker EE由公司支援,可在經過認證的作業系統和雲提供商中使用,並可執行來自Docker Store的、經過認證的容器和外掛。

Docker EE提供三個服務層次:

服務層級 功能
Basic 包含用於認證基礎設施的Docker平臺
Docker公司的支援
經過 認證的、來自Docker Store的容器與外掛
Standard 新增高階映象與容器管理
LDAP/AD使用者整合
基於角色的訪問控制(Docker Datacenter)
Advanced 新增Docker安全掃描
連續漏洞監控

大家可在該頁檢視各個服務層次的價目:https://www.docker.com/pricing

Docker CE

Docker CE是免費的Docker產品的新名稱,Docker CE包含了完整的Docker平臺,非常適合開發人員和運維團隊構建容器APP。事實上,Docker CE 17.03,可理解為Docker 1.13.1的Bug修復版本。因此,從Docker 1.13升級到Docker CE 17.03風險相對是較小的。

大家可前往Docker的RELEASE log檢視詳情https://github.com/docker/docker/releases

Docker公司認為,Docker CE和EE版本的推出為Docker的生命週期、可維護性以及可升級性帶來了巨大的改進。

1.2.2 版本迭代計劃

Docker從17.03開始,轉向基於時間的YY.MM 形式的版本控制方案,類似於Canonical為Ubuntu所使用的版本控制方案。

Docker CE有兩種版本:

edge版本每月釋出一次,主要面向那些喜歡嘗試新功能的使用者。

stable版本每季度釋出一次,適用於希望更加容易維護的使用者(穩定版)。

edge版本只能在當前月份獲得安全和錯誤修復。而stable版本在初始釋出後四個月內接收關鍵錯誤修復和安全問題的修補程式。這樣,Docker CE使用者就有一個月的視窗期來切換版本到更新的版本。舉個例子,Docker CE 17.03會維護到17年07月;而Docker CE 17.03的下個穩定版本是CE 17.06,這樣,6-7月這個時間視窗,使用者就可以用來切換版本了。

Docker EE和stable版本的版本號保持一致,每個Docker EE版本都享受為期一年的支援與維護期,在此期間接受安全與關鍵修正。

image.png

1.2.3 參考文件

ANNOUNCING DOCKER ENTERPRISE EDITION:https://blog.docker.com/2017/03/docker-enterprise-edition/

1.3 Docker的發展歷程

  • 發展歷程
Docker版本 Docker基於{}實現
Docker 0.7之前 基於LXC
Docker0.9後 改用libcontainer
Docker 1.11後 改用runC和containerd

1.4 Docker快速入門

執行如下命令,即可啟動一個Nginx容器

docker run -d -p 91:80 nginx

1.5 Docker架構

我們來看一下來自Docker官方文件的架構圖,如圖所示。

docker-architecture.png

圖12-1 Docker架構圖

我們來講解圖中包含的元件。

(1) Docker daemon(Docker守護程式)

Docker daemon是一個執行在宿主機(DOCKER_HOST)的後臺程式。我們可通過Docker客戶端與之通訊。

(2) Client(Docker客戶端)

Docker客戶端是Docker的使用者介面,它可以接受使用者命令和配置標識,並與Docker daemon通訊。圖中,docker build等都是Docker的相關命令。

(3) Images(Docker映象)

Docker映象是一個只讀模板,它包含建立Docker容器的說明。它和系統安裝光碟有點像——我們使用系統安裝光碟安裝系統,同理,我們使用Docker映象執行Docker映象中的程式。

(4) Container(容器)

容器是映象的可執行例項。映象和容器的關係有點類似於物件導向中,類和物件的關係。我們可通過Docker API或者CLI命令來啟停、移動、刪除容器。

(5) Registry

Docker Registry是一個集中儲存與分發映象的服務。我們構建完Docker映象後,就可在當前宿主機上執行。但如果想要在其他機器上執行這個映象,我們就需要手動拷貝。此時,我們可藉助Docker Registry來避免映象的手動拷貝。

一個Docker Registry可包含多個Docker倉庫;每個倉庫可包含多個映象標籤;每個標籤對應一個Docker映象。這跟Maven的倉庫有點類似,如果把Docker Registry比作Maven倉庫的話,那麼Docker倉庫就可理解為某jar包的路徑,而映象標籤則可理解為jar包的版本號。

Docker Registry可分為公有Docker Registry和私有Docker Registry。最常用的Docker Registry莫過於官方的Docker Hub,這也是預設的Docker Registry。Docker Hub上存放著大量優秀的映象,我們可使用Docker命令下載並使用。

1.6 Docker與虛擬機器

docker-vs-vm.png
  • Hypervisor層被Docker Engine取代。
  • 虛擬化粒度不同
    • 虛擬機器利用Hypervisor虛擬化CPU、記憶體、IO裝置等實現的,然後在其上執行完整的作業系統,再在該系統上執行所需的應用。資源隔離級別:OS級別
    • 執行在Docker容器中的應用直接執行於宿主機的核心,容器共享宿主機的核心,容器內部執行的是Linux副本,沒有自己的核心,直接使用物理機的硬體資源,因此CPU/記憶體利用率上有一定優勢。資源隔離級別:利用Linux核心本身支援的容器方式實現資源和環境隔離。
  • 擴充閱讀

1.7 Docker應用場景


相關文章