進擊的docker 一 : Docker 簡介

Docker簡介

一、什麼是docker

1.一、docker 起源

開源項目
誕生2013年初
GO語言開發實現
聽從了Apache2.0協議
項目代碼在GitHub維護

 1.二、docker目標

docker項目目標是實現輕量級的操做解約方案。
linux容器(LXC)等技術,在LXC的基礎上進行了封裝,讓用戶不須要關心docker的管理,使得操做更爲簡單。

 

1.3 、docker三大理念

構建:不只僅是代碼構建,也能夠是環境
運輸:運輸,能夠把構建環境放到任何地方。
運行:能夠在任何環境運行

一次建立,到處運行php

能夠作一些總體的交付(不必定是代碼 交付,能夠是運行環境和代碼放到一塊兒構建,能夠提供運行環境和代碼)linux

環境不變能夠不用docker,看業務使用,不一樣業務會有不一樣的契合度。nginx

通俗點解釋:docker

就像docker的log同樣,鯨魚(操做系統)和集裝箱(存放各類服務應用),咱們須要把各類各樣的貨物放到鯨魚身,你得爲每件貨物考慮,怎麼安放(應用程序所須要的環境),考慮貨物與貨物之間是否合適(應用程序依賴環境是否衝突)。安全

如今咱們只要把貨物放入到集裝箱裏,就能夠安全的存放,穩定,方便。服務器

引自:https://www.zhihu.com/question/28300645網絡

1.4docker組成部分

C/S架構架構

Docker Client
Docker server

注:docker服務端掛掉全部的客戶端也會掛掉運維

1.五、docker 組件

鏡像(Image):和虛擬機鏡像做用徹底同樣,可是組成部分不一樣。
容器(Container):從鏡像建立的一個實例,相互之間隔離的,不會像虛擬機那樣隔離的完全。能夠理解爲簡化版的linux環境。
倉庫(Repository):鏡像倉庫,鏡像作好能夠放進去,全部服務器只要能夠鏈接到倉庫,均可以直接下載,至關與yum倉庫。docker本身也有一個docker hub。

 

 

1.六、docker虛擬化的不一樣之處

   可見容器實在操做系統層面實現虛擬化,直接複用本地主機的操做系統,而傳統虛擬化方式則是在硬件層面實現的。

注:hypervisorssh

 Hypervisor是一種運行在物理服務器和操做系統之間的中間軟件層,可容許多個操做系統和應用共享一套基礎物理硬件,所以也能夠看做是虛擬環境中的「元」操做系統,它能夠協調訪問服務器上的全部物理設備和虛擬機,也叫虛擬機監視器(Virtual Machine Monitor)。
 Hypervisor是全部虛擬化技術的核心。非中斷地支持多工做負載遷移的能力是Hypervisor的基本功能。當服務器啓動並執行Hypervisor時,它會給每一臺虛擬機分配適量的內存、CPU、網絡和磁盤,並加載全部虛擬機的客戶操做系統。

 


 

二、爲何使用docker

docker項目的發起人和Docker.Inc的CTO 認爲,docker在正確的地點、時間順應了正確的趨勢即高效地構建應用,如今開發者須要能方便地建立運行在雲平臺的應用,也就是說應用必須可以脫離底層機器,並且同時是任什麼時候間任何地點可獲取的。所以開發者須要建立一種分佈式應用程序的方式,這也是docker所可以提供的。

docker經過容器來打包應用,這樣咱們就能夠在新的機器上啓動這個容器就能夠了,這無疑節約了大量的時間,而且大大下降了部署過程當中的錯誤。而且能夠支持把代碼和容器打包,這樣咱們就能夠直接啓動容器作相應的測試,上線。真正作到了一次搭建,到處運行。

2.一、docker在哪幾方面具備較大優點

更快的交付和部署

對於開發和運維人員來講,最但願的就是一次建立或配置,能夠在任意地方運行。
開發者可使用一個標準的鏡像來構建一套開發容器,開發完成後,運維人員開一直接使用這個容器來部署代碼。
docker能夠快速建立容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其餘成員更容易理解應用程序是如何建立和工做的。
Docker很輕很快!容器啓動時間是 秒級,大量地節約開發、測試、部署的時間。

 

更高效虛擬化

docker容器的運行不須要額外的hypervisor支持,它是內核級的虛擬化,所以能夠實現更高的性能和效率。

 

更輕鬆的遷移和擴展

Docker容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、我的電腦、服務器等。這種兼容性可讓用戶把一個應用程序從一個平臺直接遷移到另外一個。

 

更簡單的管理

 

使用docker,只須要小小的修改就能夠替代大量更新工做。全部的修改都以增量的方式被分發和更新,從而實現自動化而且高效的管理

 

2.二、docker與虛擬機的對比

虛擬機須要運行hypervisor,docker都跑在docker引擎裏面,docker不是虛擬機,沒有操做系統直接運行應用。

docker沒法像虛擬機同樣提供徹底的資源隔離,甚至好多地方都沒有隔離,好比用戶空間,一直再填坑,體驗新功能須要內核支持。


 

類別 Docker Openstacke/KVM
部署難度 很是簡單 組件多部署複雜
啓動速度 秒級 分鐘級
執行性能 和物理系統幾乎一致 VN會佔用一些資源
鏡像體積 鏡像是MB級別的 虛擬機鏡像是GB級別的
管理效率 管理簡單 組件相互依賴,管理複雜
隔離性 隔離性高 完全隔離
可管理性 單進程,不建議啓動SSH 完整的系統管理
網絡鏈接 比較弱 藉助Neutron能夠靈活組件各種網絡架構

 

 

 

 

 

 

 

須要注意:

docker裏面只能啓動一個單進程,仍是在前臺,若是掛了docker就直接退出。
docker容器就是一個進程,掛了也就掛了,按照docker理念不須要打開ssh,不須要鏈接上。 容器掛了再從新啓動一個。
docker 管理簡單 管理簡單覺得操做的簡單,沒有辦法想怎麼管怎麼管,在複雜的環境管理簡單就不是優點了。
單進程  能夠寫一個腳本里面寫多個進程解決,可是這有不符合docker理念,只要啓動一個就行了。套件能夠跑,php+nginx 能夠 可是直接跑lnmp就不符合docker的理念了。

 2.三、docker改變了什麼

2.3.一、官方說明

1.簡化配置
主要應用場景,把代碼和運行環境放到一塊兒,這樣就不須要什麼代碼部署,直接啓動容器就是一個服務。不準要環境部署和代碼上線

 

二、代碼流水線管理
開發謝代碼--測試--運維上線 docker 能夠避免
docker管理這個流水線,開發保存鏡像,測試run起來測試,測試結束,運維run起來跑,(虛擬機太大也能夠實現),一次構建處處運行

 

三、提升開發效率
快速配置開發環境
四、隔離應用(沒有虛擬機的效率高)
五、調試能力
六、多租互環境
七、快速部署(比虛擬機快的多)


2.3.二、趙班長總結:

面向產品 :產品交付  
面向開發: 簡化配置環境
面向測試: 多版本測試
面向運維: 環境一致性
面向架構: 自動化擴容(微服務)

 

 本文主要借鑑趙班長課件

     https://www.unixhot.com/

相關文章
相關標籤/搜索