001.Docker簡介概述

一 簡介

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來指導系統環境和依賴,這樣對於持續交付十分有利。
 
特性
容器
虛擬機
部署難度
簡單
部署相對複雜
啓動
秒級
分鐘級
硬盤使用
通常爲MB
通常爲GB
性能
原生
弱於
系統支持量
單機支持上千個容器
通常幾十個
管理效率
管理簡單
管理複雜

三 場景

Docker一般用於以下場景:
  • web應用的自動化打包和發佈;
  • 自動化測試和持續集成、發佈;
  • 在服務型環境中部署和調整數據庫或其餘的後臺應用;
  • 從頭編譯或者擴展示有的OpenShift或Cloud Foundry平臺來搭建本身的PaaS環境。

四 架構

  • Docker客戶端 – Docker
docker客戶端則扮演着docker服務端的遠程控制器,能夠用來控制docker的服務端進程。
  • Docker服務端 – Docker Daemon
docker服務端是一個服務進程,管理着全部的容器。
提示:大部分狀況下,docker服務端和客戶端運行在一臺機器上。
  • Docker鏡像 – Image
docker鏡像,一個可以運行在docker容器上的一組程序文件,是一個只讀的模板。
  • Docker容器 – Docker Container
docker容器,就是運行程序的載體。鏡像(Image)是靜態的定義,容器是鏡像運行時的實體。docker容器是從鏡像建立的運行實例。它能夠被啓動、開始、中止、刪除。每一個容器都是相互隔離的、保證安全的平臺。
  • Docker鏡像倉庫 -- Registry
Docker倉庫是集中存放鏡像文件的場所,Docker倉庫分爲公開倉庫(Public)和私有倉庫(Private)兩種形式。Docker鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等),鏡像不包含任何動態數據。
04_thumb1
相關文章
相關標籤/搜索