1.docker的歷史與現狀分析linux
老一代PASS平臺的侷限性和困境:git
主要提供應用部署和託管,針對應用開發者,僅支持特定的LAAS基礎技術,支持單種開發語言和框架,支持特定服務,如自定義的數據存儲APIs,沒有很好的解決經常使用中間件的部署問題,難以解決應用和資源的隔離問題。github
新一代PAAS平臺:docker
全方位應用生命週期管理,關注開放性,應用的可移植性和雲間相互操做性,表明包括Cloud Foundry, OpenShift, Docker, Heroku, MoPass等技術或服務,具有如下大多數特徵(多語言和框架,多服務,多雲和多laaS技術)ubuntu
docker被稱爲第三代Paas平臺。centos
docker於2013.3.27正式發佈,github上貢獻增加迅猛,2013.10dotCloud公司更名docker。api
2.docker的技術原理介紹安全
docker是虛擬化的一種輕量級替代技術。docker容器不依賴於任何語言、框架或系統 ,能夠將APP變成一種標準化的可移植的自管理的組件,並脫離服務器硬件在任何主流系統中開發調試和運行。服務器
在linux系統上迅速建立一個容器並在容器上部署和運行應用程序,並經過配置文件能夠輕鬆實現應用程序的自動化安裝 、部署和升級,很是方便。能夠很方便的把生產和開發環境分開。網絡
docker核心技術:cgroups
cgroups就是 controller group, linux系統中常常有個需求但願能限制某個或某些進程的分配資源。因而出是cgroups概念,在這個group中, 有分配好的特定比例的cpu時間,IO時間, 可用內存大小等。cgroups是將任意進程進行分組 化管理的linux內核功能。由google工程師提出,後來整合進linux內核。
docker核心技術:LXC
LXC是linux container的簡稱,是一種基於容器的操做系統層級的虛擬化技術。藉助於namespace的隔離機制和cgroups的限額功能,lxc提供了一套統一的API和工具來創建和管理container。LXC跟其餘 操做系統 層次的虛擬技術相比,最大的優點是LXC被整合進內核,不用單獨爲內核打補丁。
LXC旨在提供一個共享kernel的OS級虛擬化方法,在執行時不用重複加載kernel,且container的kernel與host共享,所以大加快container的啓動過程,並顯著減小內存消耗,還經過共享資源 節省資源開銷,意味着容器化比真正的虛擬化的開銷要小得多。在實際測試中,基於LXC的虛擬化方法的IO和CPU性能幾乎接近baremetal的性能。但若是內核中止,全部容器都會中止運行。
docker核心技術:AUFS
AuFS是一個能透明覆蓋一個或多個現有文件系統的層狀文件系統.支持將不一樣目錄掛載到同一個虛擬文件系統下,能夠把不一樣的目錄聯合在一塊兒,組成一個單一的目錄。這是一種虛擬的文件 系統,文件 系統不用格式化,直接掛載便可.
docker一直在用AuFS做爲容器的文件系統。當一個進程須要修改一個文件 時,AuFS建立該文件的一個副本。AuFS能夠把多層合併 成文件 系統 的單層表示。這個過程稱爲寫入複製。
AuFS容許docker把某些鏡像做爲容器的基礎。能夠節省存儲和內存,也保證更快速的容器部署。
使用AuFS的另外一個好處是docker的版本容器鏡像能力。
docker原理:APP打包
LXC的基礎上,docker額外提供的功能包括標準統一的打包部署方案。爲最大化重用image, 加快運行速度,減小內存和磁盤footprint, docker container運行時所構造的運行環境,實際 上是由具備依賴關係的多個layer組成的。有了層級化的image作基礎,不一樣APP就能夠共用底層文件 系統、相關依賴工具等,同一個APP的不一樣實例也能夠實現共用絕大多數數據,進而以copy on write的形式維護本身修改過的那份數據等。
docker全生命週期開發模式:
docker正在迅速改變雲計算領域的運做規則,從持續集成/持續交付到微服務、開源協做,到DevOps, docker已經給應用程序開發生命週期及雲工程計算實踐帶來了巨大變革。
3. docker 的基本概念
docker image :
docker image是一個極度精簡版的linux程序運行環境。docker image是須要定製化build的一個「安裝 包」, 包括基礎鏡像 + 應用的二進制部署包。docker image內不建議有運行期須要修改的配置文件。
dockerfile用來建立一個自定義的image, 包含了用戶指定的軟件依賴等。docker iamges的最佳實踐之一是儘可能重用和使用網上公司的鏡像。
docker container:
docker container是image的實例,共享內核。docker container裏能夠運行不一樣OS的image,如ubuntu或centos。docker1.3新增docker exec命令進入容器排查問題。docker container沒有IP 地址,一般不會有服務端口暴露,是一個封閉的盒子/沙箱。
docker 生命週期:
Docker daemon:
docker daemon是建立和運行container的linux守護進程,也是docker最主要的核心組件。docker daemon能夠綁定本地端口並提供rest api服務,用來遠程訪問和控制。
Docker registry/hub:
4.docker學習基礎技能
linux基本操做和基本知識,磁盤,文件 ,日誌,用戶,權限,安全,網絡,等。