【Docker技術入門與實戰】什么是Docker

jopen 9年前發布 | 36K 次閱讀 Docker

本文節選自《Docker技術入門與實戰》,華章授權DockerOne發布本書樣章,禁止以任何形式轉載此文。

Docker開源項目

Docker是基于Go語言實現的云開源項目,誕生于2013年初,最初發起者是dotCloud公司。 Docker自開源后受到廣泛的關注和討論,目前已有多個相關項目,逐漸形成了圍繞Docker的生態體系。dotCloud公司后來也改名為 Docker Inc,專注于Docker相關技術和產品的開發。

Docker項目目前已加入了Linux基金會,遵循Apache 2.0協議,全部開源代碼均在https://github.com/docker/docker上進行維護。在最近一次Linux基金會的調查中,Docker是僅次于OpenStack的最受歡迎的云計算開源項目。

現在主流的Linux操作系統都已經支持Docker。例如,Redhat RHEL 6.5/ CentOS 6.5往上的操作系統、Ubuntu 14.04操作系統,都已經默認帶有Docker軟件包。Google公司宣稱在其PaaS(Platform as a Service)平臺及服務產品中廣泛應用了Docker。微軟公司宣布和 Docker公司合作,以加強其云平臺Azure對Docker的支持。公有云提供商亞馬遜近期也推出了AWS EC2 Container,提供對Docker的支持。

Docker的主要目標是“Build, Ship and Run Any App, Anywhere”,即通過對應用組件的封裝(Packaging)、分發(Distribution)、部署(Deployment)、運行(Runtime)等生命周期的管理,達到應用組件級別的“一次封裝,到處運行”。這里的應用組件,既可以是一個Web應用,也可以是一套數據庫服務,甚至是一個操作系統或編譯器。

Docker基于Linux的多項開源技術提供了高效、敏捷和輕量級的容器方案,并且支持在多種主流云平臺(PaaS)和本地系統上部署。可以說Docker為應用的開發和部署提供了“一站式”的解決方案。

Linux容器技術

Docker引擎的基礎是Linux容器(Linux Containers,LXC)技術。IBM DeveloperWorks上給出了關于容器技術的準確描述:

容器有效地將由單個操作系統管理的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有沖突的資源使用需求。與虛擬化相比,這樣既不需要指令級模擬,也不需要即時編譯。容器可以在核心CPU本地運行指令,而不需要任何專門的解釋機制。此外,也避免了準虛擬化(paravirtualization)和系統調用替換中的復雜性。
Linux容器其實不是一個全新的概念。最早的容器技術可以追溯到1982年Unix系列操作系統上的chroot工具(直到今天,主流的Unix、Linux操作系統仍然支持和帶有該工具)。早期的容器實現技術包括Sun Solaris操作系統上的Solaris Containers(2004年發布),FreeBSD操作系統上的FreeBSD jail(2000年左右出現),以及GNU/Linux上的Linux-VServer (http://linux-vserver.org/)(2001年10月)和OpenVZ (http://openvz.org)(2005年)。

雖然這些技術經過多年的演化已經十分成熟,但是由于種種原因,這些容器技術并沒有被集成到主流的Linux內核中,使用起來并不方便。例如,如果用戶要使用OpenVZ技術,就需要先給操作系統打上特定的內核補丁方可使用。

后來LXC項目借鑒了前人成熟的容器設計理念,并基于一系列新的內核特性實現了更具擴展性的虛擬化容器方案。更加關鍵的是,LXC被集成到了主流Linux內核中,進而成為Linux系統輕量級容器技術的事實標準。

從Linux容器到Docker

在LXC的基礎上,Docker進一步優化了容器的使用體驗。Docker提供了各種容器管理工具(如分發、版本、移植等)讓用戶無需關注底層的操作,可以簡單明了地管理和使用容器。用戶操作Docker容器就像操作一個輕量級的虛擬機那樣簡單。

讀者可以簡單地將Docker容器理解為一種沙盒(Sandbox)。每個容器內運行一個應用,不同的容器相互隔離,容器之間也可以建立通信機制。容器的創建和停止都十分快速,容器自身對資源的需求也十分有限,遠遠低于虛擬機。很多時候,甚至直接把容器當作應用本身也沒有任何問題。

有理由相信,隨著Docker技術的進一步成熟,它將成為更受歡迎的容器虛擬化技術實現,得到更廣泛的應用。

來自:http://dockerone.com/article/72

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!