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運行容器前需要檢查本地是否存在對應的鏡像,如果不存在,會嘗試從默認的鏡像倉庫下載。鏡像實例化之後運行著一個完整的容器,容器除了鏡像本身的內容外,還提供額外的可寫文件層以及相對獨立的運行環境(可能是一些應用或者服務,也可能是完整的操作系統)。
作為一個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貢獻後續完善的一個開放的工業化標准,其主要內容:
5. 集群管理
Kubernetes是Google開源的Docker容器集群管理系統,為容器化的應用提供資源調度、部署運行、服務發現、擴容縮容等整一套功能,本質上可看作是基於容器技術的mini-PaaS平台。
關於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