一 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的缺點sql
三 docker的相關知識點
Docker組件(核心):鏡像、容器、庫。
採用C/S架構:客戶端(執行程序)→經過命令行和API形式和守候程序(提供Docker服務)進行通信。
鏡像:一個只讀的靜態模板(框架體系);包含環境和應用執行代碼(框架語言);採用分層機制。將新增數據經過聯合文件系統附加在原基礎上。
容器:一個運行時環境,是鏡像的運行狀態,是鏡像執行的一種動態表現。
庫:使用註冊服務器(共有的or私有的)存儲和共享用戶的鏡像,是某個特定用戶存儲鏡像的目錄。
*Docker特性:
*隔離性:libcontainer(默認容器)=>內核命名空間。
*安全性:內部(cgroups)| 容器和宿主主機(內核能力機制)。
*可度量性:cgroups(控制組)→資源度量和分配(用戶)。
*移植性:AUFS(快速更新)→層的概念。
-----使用AUFS做爲Docker容器的文件系統,提供的好處:docker
Docker優勢(比較LXC):
*跨平臺可移植性:按統一標準打包(鏡像中),可傳播。
*面向應用:優化部署應用(設計哲學)→API,接口及文檔(體現)。
*版本控制:追蹤、查詢、記錄版本信息(應用程序更改史)和回滾版本等
*組件複用:組件式搭建(基礎鏡像)→Python(運行環境) | postgreasql(基礎鏡像)。
*共享性:公共的註冊服務器(可免費下載源碼)。
安全