一 docker的8個使用場景
1.簡化配置
虛擬機的最大好處是能在你的硬件設施上運行各種配置不一樣的平台(軟件, 系統), Docker在降低額外開銷的情況下提供了同樣的功能. 它能讓你將運行環境和配置放在代碼匯總然后部署, 同一個Docker的配置可以在不同的環境環境中使用, 這樣就降低了硬件要求和應用環境之間耦合度.
2.代碼流水線管理
代碼從開發者的機器到最終在生產環境上的部署, 需要經過很多的中堅環境. 而每一個中間環境都有自己微小的差別, Docker給應用提供了一個從開發到上線均一致的環境, 讓代碼的流水線變得簡單不少.
3.提升開發效率
不同環境中, 開發者的共同目標:
一, 想讓開發環境盡量貼近生產環境.
二 , 想快速搭建開發環境
開發環境的機器通常內存比較小, 之前使用虛擬的時候, 我們經常需要為開發環境的機器加內存, 而現在Docker可以輕易的讓幾十個服務在Docker中跑起來.
4.隔離應用
開發時會在一個台機器上運行不同的應用.
一, 為了降低成本, 進行服務器整合
二, 將一個整體式的應用拆分成低耦合的單個服務(微服務架構)
5.整合服務器
Docker隔離應用的能力使得Docker可以整合多個服務器以降低成本. 由於沒有多個操作系統的內存占用, 以及能在多個實例之間共享沒有使用的內存, Docker可以比虛擬機提供更好的服務器整合解決方案.
6.調試能力
Docker提供了很多的工具, 這些工具不一定只是針對容器, 但是卻適用於容器. 他們提供了很多功能, 包括可以為容器設置檢查點, 設置版本, 查看兩個容器之間的差別, 這些特性可以幫助調試Bug.
7.多租戶環境
多租戶環境的應用中, 它可以避免關鍵應用的重寫.我們一個特別的關於這個場景的例子是為loT(物聯網)的應用開發一個快速, 易用的多租戶環境. 這種多租戶的基本代碼非常復雜, 很難處理, 重新規划以應用不但消耗時間, 也浪費金錢.
使用Docker, 可以為每一個租戶的應用層的多個實例創建隔離的環境, 這不僅簡單而且成本低廉, 因為Docker環境啟動的速度快, diff命令很高效.
8.快速部署
Docker為進程創建一個容器, 不需要啟動一個操作系統, 時間縮短為秒級別.
可以在數據中心創建銷毀資源而無須擔心重新啟動帶來的開銷. 通常數據中心的資源利用率只有30% , 通過使用Docker並進行有效的資源分配可以提高資源的利用率.
二 docker的缺點
三 docker的相關知識點
Docker組件(核心):鏡像、容器、庫。
采用C/S架構:客戶端(執行程序)→通過命令行和API形式和守候程序(提供Docker服務)進行通訊。
鏡像:一個只讀的靜態模板(框架體系);包含環境和應用執行代碼(框架語言);采用分層機制。將新增數據通過聯合文件系統附加在原基礎上。
容器:一個運行時環境,是鏡像的運行狀態,是鏡像執行的一種動態表現。
庫:使用注冊服務器(共有的or私有的)存儲和共享用戶的鏡像,是某個特定用戶存儲鏡像的目錄。
*Docker特性:
*隔離性:libcontainer(默認容器)=>內核命名空間。
*安全性:內部(cgroups)| 容器和宿主主機(內核能力機制)。
*可度量性:cgroups(控制組)→資源度量和分配(用戶)。
*移植性:AUFS(快速更新)→層的概念。
-----使用AUFS作為Docker容器的文件系統,提供的好處:
Docker優點(比較LXC):
*跨平台可移植性:按統一標准打包(鏡像中),可傳播。
*面向應用:優化部署應用(設計哲學)→API,接口及文檔(體現)。
*版本控制:追蹤、查詢、記錄版本信息(應用程序更改史)和回滾版本等
*組件復用:組件式搭建(基礎鏡像)→Python(運行環境) | postgreasql(基礎鏡像)。
*共享性:公共的注冊服務器(可免費下載源碼)。