歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> Docker大行其道—初識

Docker大行其道—初識

日期:2017/3/6 9:47:48   编辑:學習Linux

Docker大行其道—初識


Docker大行其道—初識


導讀隨著分布式、雲計算、大數據的火熱爆發,大量的雲計算集群出現,光憑計算機硬件配置的已經無法再次一較高下,虛擬化成為其中最核心的技術。虛擬化既可以通過硬件模擬,也可以通過操作系統層面去實現,近年來熱火朝天的容器輕量級虛擬化,保留了操作系統本身的機制和特性,而Docker在此脫穎而出。

Docker的前世今生

Docker是基於Go語言實現的雲開源項目,目前歸於Apache基金會並遵循Apache 2.0協議。誕生於2013年初,前身公司為dotCloud,docker開源後得到受到社會廣泛的關注,docker的生態圈體系也逐漸成熟,這家公司也改名為Docker Inc,專注於Docker相關技術和產品開發。

Docker最大的目標是:“Build, Ship and Run Any App, Anywhere!”。你只需要通過對應用組件的一次的封裝,就能在任意地點構建和運行你的應用。無論是一個完整的應用,或者是某些微服務,甚至到一個完整的操作系統都能成為docker的應用組件。Docker提供一個高效、敏捷和輕量的容器方案,能動態適應各種規模的系統部署需求。

Docker整個生命周期包含三部分:鏡像(Image),容器(Container),倉庫(Repository)。鏡像和容器的關系就像程序和進程,鏡像是容器運行的一大前提,而容器則是鏡像的一個運行實例。倉庫則是鏡像的管理中心,默認的鏡像倉庫為Docker Hub。

docker-frame

Docker運行容器前需要檢查本地是否存在對應的鏡像,如果不存在,會嘗試從默認的鏡像倉庫下載。鏡像實例化之後運行著一個完整的容器,容器除了鏡像本身的內容外,還提供額外的可寫文件層以及相對獨立的運行環境(可能是一些應用或者服務,也可能是完整的操作系統)。

作為一個C/S模型的項目,Docker通過Docker Host進行鏡像、容器、守護進程、分區等的管理,同時在Docker Client進行鏡像的拉取,容器的構建等操作,通常情況下Host和Client可能會在同一台機器上。

Docker開源代碼地址:https://github.com/docker/docker

Docker得天獨厚的優勢新的部署方式

假如當前有這麼一個場景:“由於業務增長,公司的一個網站項目需要遷移到新的服務器”。按照傳統方案,我們很可能需要作一些重復性的工作。首先需要在新的服務器上安裝對應的運行環境以及對應的依賴,如LAMP(Linux+Apache+Mysql+PHP),創建對應的用戶或組並進行文件權限的管理,耗費大量的精力後,還需要對該環境進行測試,最後才能部署上線。試想一下,如果這樣的需求多少十幾倍,這些工作需要重復的執行。

也許你會說可以通過虛擬化的技術將整個環境打包成鏡像再進行部署,加入新的服務器本身也是一台虛擬化的機器,再加上一層xen(或者其他虛擬機)去部署顯然顯得多余了。

而Docker提供一種極為簡便的操作方式,通過容器來進行應用打包,我們可以通過封裝成鏡像或是編寫Dockerfile等方式來進行打包,這意味著在新的服務器上只需要啟動所需要的容器即可。一來節省了大量的時間投入,而來降低了部署過程出現問題帶來的隱患。

運維策略的革新

1. 極速交付和部署

使用docker,開發人員可以使用鏡像快速構建一套標准的開發環境。之後的測試和上線環節完全可以復用這套鏡像將應用部署到測試環境或生產環境等任意地方。Docker可以快速創建、刪除容器,並保留了每一個步驟的配置和操作過程,降低開發、測試、部署的時間的同時讓環境部署更容易被理解。通過簡單的配置文件修改,就能輕松完成一次運行環境的迭代,所有操作都可以以增量的形式進行分發和更新,從而實現自動化和高效的容器管理。

2. 性能損耗低

事實上docker是內核級別的虛擬化,不需要額外的虛擬化管理程序,因此開啟docker對性能的損耗幾乎忽略不計。

3. 輕便易遷移拓展

Docker幾乎支持任意平台運行,無論是物理機還是虛擬化的主機,甚至個人電腦都能兼容運行docker,這種兼容性可以讓應用更方便切換運行平台。

4. 規范化的標准

Docker背後的標准化容器執行引擎 - runC。runC是由docker貢獻後續完善的一個開放的工業化標准,其主要內容:

  • 操作標准化:容器的標准化操作包括使用標准容器感覺創建、啟動、停止容器,使用標准文件系統工具復制和創建容器快照,使用標准化網絡工具進行下載和上傳。
  • 內容無關:內容無關指不管針對的具體容器內容是什麼,容器標准操作執行後都能產生同樣的效果。如容器可以用同樣的方式上傳、啟動,不管是php應用還是mysql數據庫服務。
  • 基礎設施無關:無論是個人的筆記本電腦還是AWS S3,亦或是Openstack,或者其他基礎設施,都應該對支持容器的各項操作。
  • 為自動化量身定制:制定容器統一標准,是的操作內容無關化、平台無關化的根本目的之一,就是為了可以使容器操作全平台自動化。
  • 工業級交付:制定容器標准一大目標,就是使軟件分發可以達到工業級交付成為現實。

5. 集群管理

Kubernetes是Google開源的Docker容器集群管理系統,為容器化的應用提供資源調度、部署運行、服務發現、擴容縮容等整一套功能,本質上可看作是基於容器技術的mini-PaaS平台。

Kubernetes

關於Docker和虛擬機的比較,請參考:http://www.linuxprobe.com/docker-and-vm.html

關於Docker的標准,請參考:http://www.open-open.com/lib/view/open1444481959869.html

文章小節

全文主要對docker進行概念性的介紹,想必讀到這裡,docker再也不會是一個陌生的技術。無論是在針對應用的自動化運維還是PAAS的管理策略,docker都能提供一套優秀的解決方案,docker在領域內倍受青睐,讓運維的工作有了前所未有的優質體驗。如果你也被docker的魅力深深折服的話,歡迎加入到docker的學習行列一同探索。

本文轉載地址:http://www.linuxprobe.com/docker-tours-1.html


http://xxxxxx/Linuxjc/1134230.html TechArticle

Copyright © Linux教程網 All Rights Reserved