1. 程式人生 > 實用技巧 >Docker它是個啥?

Docker它是個啥?

新技術越來越多,最近不斷地被周圍的朋友洗腦,儼然再不寫點新技術,就沒有臉在IT圈裡混了。好吧,那讓我也擁抱一下開源技術,寫寫Docker。那Docker到底是個啥?



Docker中文手冊上是這樣說的:

Docker是一個開源的引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機器)、bare metal、OpenStack 叢集和其他的基礎應用平臺。



Docker與“集裝箱”

我們經常說Docker它幫助我們實現了“集裝箱”的功能。


現實世界中集裝箱是這樣的,它為我們解決了貨物的運輸問題, “集裝箱”可以幫助我們解決各種型號規格尺寸的貨物在各種運輸工具上方便運輸。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


那麼IT技術中的Docker是幹什麼的呢?原來它是為了幫助我們解決軟體的“運輸”問題。它可以將各種應用程式和他們所依賴的執行環境打包成標準的container/p_w_picpath,進而釋出到不同的平臺上執行。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


所以,在某種程度上,Docker可以看作是用程式碼編寫出來的國際集裝箱。Docker可以把任何應用及相關依賴項打包成一個輕量、可移植、自包涵式的容器,該容器擁有標準的操作,從而能夠實現自動化。



從集裝箱的特點,看Docker

640?wx_fmt=png&wxfrom=5&wx_lazy=1


內容無關性

相同的集裝箱幾乎可以容納任何型別的貨物,Docker也可以封裝程式碼、環境、配置檔案,負載及其依賴項。


硬體無關性

集裝箱允許把貨物從船上運輸到火車、卡車上,直到運輸到倉庫,整個過程無需整理貨物或開啟容器。Docker使用作業系統基元(例如:LXC)幾乎可以在任何平臺上執行——虛擬機器、裸機、OpenStack、公共IaaS等,並且無需修改。


內容的隔離和互動

集裝箱無需擔心各種箱子裡的貨物是什麼,它們之間會不會彼此影響,我們可以堆積運輸。Docker讓資源、網路和內容隔離,避免依賴性。


自動化

集裝箱標準的規格使其易於實現自動化裝卸、搬運等,Docker使執行、啟動、停止、提交、搜尋等都有標準的操作。


高效,快捷

集裝箱無需開啟或修改,可以在起始兩地快速地移動/運輸,Docker是輕量級的,一次構建可以隨處執行,方便我們進行快速移動和操作。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1



那問題來了:Docker和虛擬化的區別是什麼?


講段故事,來和大家解釋一下

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1




古代有一位國王在它的國境裡視察,因為路面崎嶇不平,還有很多碎石頭,刺得國王的腳又痛又麻。

回到了王宮後,他下了一道命令,要將國內所有的道路都鋪上一層牛皮。讓他自己和全國的人走路不再受刺痛之苦。眾大臣聽了國王的話都一籌莫展,知道這很難。即便殺盡國內所有的牛,也湊不到足夠的牛皮來鋪路,而且花費昂貴。這時,一個聰明的僕人向國王建言:可以試著用牛皮將腳包起來,大王的腳就不會忍受痛苦了。國王聽道而頓悟了,便收回命令,採納了建議,於是,皮鞋就這樣發明了出來了。




引申到Docker和虛擬化

OK,大家一定想問我,韓梅梅童鞋你想說明什麼?回顧一下故事,解決腳痛不方便的方案有二:第1方案是:將所有道路都鋪上一層牛皮(如VMware),實在不經濟實惠。第2方案是:用兩片牛皮包住腳,這就是皮鞋(Docker集裝箱)。那麼,你領悟到什麼呢? 至少明顯知道第2方案可帶來可觀的經濟效益。


傳統的虛擬化(virtualization)技術就相當於在各道路(實體機器)上鋪一層牛皮(VM, 虛擬機器),然後讓國王的腳(App)在牛皮(VM)上走路(執行)。傳統上雲平臺採取虛擬化手段來滿足使用者個別的資源需求分配,以及確保其可用性和隔離性。然而無論是KVM還是Xen等Guest OS都很浪費資源又難於管理, 都不如Docker集裝箱(皮鞋)來的更加靈活、快速和節省資源。


好吧,放張比較圖讓大家看一看


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1



那問題又來了:Docker會不會取代虛擬化

現階段,傳統的虛擬技術還不會被取代。Docker或者說容器技術和虛擬機器並非簡單的取捨關係。目前,很多企業仍在使用虛擬機器技術,原因很簡單,他們需要一個高效,安全且高可用的架構。然而,剛剛面世兩年的Docker還沒有經歷沙場考驗,CaaS(Container as a Service,容器即服務)概念也是近兩年才剛剛出現。無論是應用管理還是執行維護方面,Docker都還處於發展與完善階段。


結語

俗話說:天下武學,唯快不破;在更新迭代如此之快的IT更是如此,一夜成名早已不是什麼新聞。Docker 這個技術公司,向我們證明了,成為一個"國際巨星",只需要一個月。2013年2月決定開源,到2013年3月20日釋出Docker0.1,只用了一個月的時間。到今天,一個圍繞著Docker的小型初創企業生態體系逐漸形成。Docker先後贏得了Google、微軟、Amazon、VMware等巨頭的青睞,巨頭們紛紛示意將保證自己平臺與Docker容器技術的相容性,Docker勢不可擋。

轉載於:https://blog.51cto.com/hanmei/1691326