開源項目,誕生2013年,給予GO語言實作,後加入LINUX基金會遵循的Apache2.0協定。
紅帽在6.5中集中支援docker. 組成架構:c/s
基本概念:
鏡像 Image
Docker鏡像就是一個隻讀的模闆
例如:一個鏡像可以包含一個完整的redflag作業系統環境,裡面僅安裝了Apache或使用者需要的其它應用程式.
鏡像可以用來建立Docker容器.Docker提供了一個很簡單的機制來建立鏡像或者更新現有的鏡像,
使用者甚至可以直接從其他人那裡下載下傳一個已經做好的鏡像來直接使用
容器 Container
Docker利用容器運作應用
容器是從鏡像建立的運作執行個體,它可以被啟動、開始、停止、删除。每個容器都是互相隔離的,保證安裝的平台
可以把容器看做是一個簡易版的Linux環境,(包括root使用者權限、程序空間、使用者空間和網絡空間等)
和運作在其中的應用程式
注:鏡像是隻讀的,容器在啟動的時候建立一層可寫層作為最上層
倉庫 Repository
倉庫是集中存放鏡像檔案的場所,有時候會把倉庫和倉庫注冊伺服器混為一談,并不嚴格區分。
實際上,倉庫注冊伺服器上往往存放着多個倉庫,每個倉庫中又兇信了多個鏡像,每個鏡像有不同的标簽
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式
使用者可以在本地網絡内建立一個私有倉庫
當使用者建立了自己的鏡像之後就可以使用push指令将它上傳到公有或者私有倉庫,
這樣下次在另外一台機器上使用這個鏡像時候,隻需要從倉庫上pull下來就可以了
1.2 DOCKER 如何實作資源隔離 LXC
通過LXCLinux的容器技術,具體使用的是核心Kernel中的namespace
PID namespace PID
NET namespace 網絡
IPC namespace IPC
MNT namespace 挂載
UTS namespace hostname
User namespace 使用者
1.3 資源限制 cgroup CPU+記憶體
docker run -it --rm -c 512 stress --cpu 1 預設1024權重調成512 占用比66%+33%=1
docker run -it --rm -cpuset-cpus=0 stress--cpu 1 使用第0顆CPU
docker run -it --rm -m 128m stress --cpu 1--vm-bytes 128m --vm-hang 0 設定記憶體為128M運作
1.4 網 絡模式
1橋接br brctl show 預設 容器IP被配置設定成172.16.1.0段的網絡環境,按着啟動順序配置設定
2host
3container
4none
2 與KVM和XEN對比:
Docker虛拟化方案: 伺服器--系統--容器--指令庫--APP
KVM和XEN傳統虛拟化方案:伺服器-系統--管理KVM或XEN--系統--指令庫--APP
2 與openstack對比:
類别 Docker openstatck
安裝 非常簡單 元件多,部署複雜
啟動速度 秒級别 分鐘級别
性能 和實體系統幾乎一樣 vm會占用一些資源
鏡像體積 MB GB
隔離性 隔離性高 徹底隔離
可管理性 單程序,不建議啟動SSH 完整的系統管理
網絡連接配接 比較弱 借助NEUTRON
3 為什麼要用Docker 應用場景:
1 更快速的傳遞和部署,一次建立或配置,到處都能運作,簡化配置,提高開發效率,快速部署
2 更高效的虛拟化,核心級别的虛拟化
3 更輕松的遷移和擴充,相容平台多,友善移植
4 更簡單的管理,隻要做小小的修改就能,替代以往大量的更新工作,修改作為增量被分發和更新
5 伺服器隔離,組合服務,多租戶,代碼流水線管理
4 Docker運作環境:
Docker 運作在 CentOS-6.5 或更高的版本的 CentOS 上,需要核心版本是 2.6.32-431 或者更高版本
檢視核心版本:uname -r
本文轉自 OpenStack2015 部落格,原文連結: http://blog.51cto.com/andyliu/1857653 如需轉載請自行聯系原作者