一 簡介 Docker最初是dotCloud公司的一個內部項目,誕生於 2013 年初,由google公司開源的Go語言開發。 Docker是一個開源的引擎,可以輕鬆的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬 ...
一 簡介
Docker最初是dotCloud公司的一個內部項目,誕生於 2013 年初,由google公司開源的Go語言開發。 Docker是一個開源的引擎,可以輕鬆的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集群和其他的基礎應用平臺。二 特性
2.1 docker特性
- 標準化
- 保證一致的運行環境
- 彈性伸縮,快速擴容
- 方便遷移
- 持續集成、持續交付與持續部署
- 高性能
- 不需要進行硬體虛擬以及運行完整的操作系統
- 輕量級
- 快速啟動
- 隔離性
- 進程隔離
2.2 容器的組成
容器=cgroup+namespace+rootfs+容器引擎(用戶態工具)- Cgroup:資源控制
- Namespace:訪問隔離
- rootfs:文件系統隔離
- 容器引擎:生命周期控制
2.2 docker與KVM
虛擬化技術依賴物理CPU和記憶體,是硬體級別的; 而docker構建在操作系統上,利用操作系統的containerization技術,所以docker甚至可以在虛擬機上運行。 虛擬化系統一般都是指操作系統鏡像,比較複雜,稱為“系統”; 而docker開源而且輕量,稱為“容器”,單個容器適合部署少量應用,比如部署一個redis、一個memcached。 傳統的虛擬化技術使用快照來保存狀態; 而docker在保存狀態上不僅更為輕便和低成本,而且引入了類似源代碼管理機制,將容器的快照歷史版本一一記錄,切換成本很低。 傳統的虛擬化技術在構建系統的時候較為複雜,需要大量的人力; 而docker可以通過Dockfile來構建整個容器,重啟和構建速度很快。更重要的是Dockfile可以手動編寫,這樣應用程式開發人員可以通過發佈Dockfile來指導系統環境和依賴,這樣對於持續交付十分有利。三 場景
Docker通常用於如下場景:- web應用的自動化打包和發佈;
- 自動化測試和持續集成、發佈;
- 在服務型環境中部署和調整資料庫或其他的後臺應用;
- 從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。
四 架構
- Docker客戶端 – Docker
- Docker服務端 – Docker Daemon
- Docker鏡像 – Image
- Docker容器 – Docker Container
- Docker鏡像倉庫 -- Registry