新技術愈來愈多,最近不斷地被周圍的朋友洗腦,儼然再不寫點新技術,就沒有臉在IT圈裏混了。好吧,那讓我也擁抱一下開源技術,寫寫Docker。那Docker究竟是個啥?
安全
Docker是一個開源的引擎,能夠輕鬆的爲任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試經過的容器能夠批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集羣和其餘的基礎應用平臺。
網絡
咱們常常說Docker它幫助咱們實現了「集裝箱」的功能。架構
現實世界中集裝箱是這樣的,它爲咱們解決了貨物的運輸問題, 「集裝箱」能夠幫助咱們解決各類型號規格尺寸的貨物在各類運輸工具上方便運輸。ide
那麼IT技術中的Docker是幹什麼的呢?原來它是爲了幫助咱們解決軟件的「運輸」問題。它能夠將各類應用程序和他們所依賴的運行環境打包成標準的container/p_w_picpath,進而發佈到不一樣的平臺上運行。工具
因此,在某種程度上,Docker能夠看做是用代碼編寫出來的國際集裝箱。Docker能夠把任何應用及相關依賴項打包成一個輕量、可移植、自包涵式的容器,該容器擁有標準的操做,從而可以實現自動化。
測試
內容無關性spa
相同的集裝箱幾乎能夠容納任何類型的貨物,Docker也能夠封裝代碼、環境、配置文件,負載及其依賴項。操作系統
硬件無關性3d
集裝箱容許把貨物從船上運輸到火車、卡車上,直到運輸到倉庫,整個過程無需整理貨物或打開容器。Docker使用操做系統基元(例如:LXC)幾乎能夠在任何平臺上運行——虛擬機、裸機、OpenStack、公共IaaS等,而且無需修改。blog
內容的隔離和交互
集裝箱無需擔憂各類箱子裏的貨物是什麼,它們之間會不會彼此影響,咱們能夠堆積運輸。Docker讓資源、網絡和內容隔離,避免依賴性。
自動化
集裝箱標準的規格使其易於實現自動化裝卸、搬運等,Docker使運行、啓動、中止、提交、搜索等都有標準的操做。
高效,快捷
集裝箱無需打開或修改,能夠在起始兩地快速地移動/運輸,Docker是輕量級的,一次構建能夠隨處運行,方便咱們進行快速移動和操做。
講段故事,來和你們解釋一下
古代有一位國王在它的國境裏視察,由於路面崎嶇不平,還有不少碎石頭,刺得國王的腳又痛又麻。
回到了王宮後,他下了一道命令,要將國內全部的道路都鋪上一層牛皮。讓他本身和全國的人走路再也不受刺痛之苦。衆大臣聽了國王的話都束手無策,知道這很難。即使殺盡國內全部的牛,也湊不到足夠的牛皮來鋪路,並且花費昂貴。這時,一個聰明的僕人向國王建言:能夠試着用牛皮將腳包起來,大王的腳就不會忍受痛苦了。國王聽道而頓悟了,便收回命令,採納了建議,因而,皮鞋就這樣發明了出來了。
引伸到Docker和虛擬化
OK,你們必定想問我,韓梅梅童鞋你想說明什麼?回顧一下故事,解決腳痛不方便的方案有二:第1方案是:將全部道路都鋪上一層牛皮(如VMware),實在不經濟實惠。第2方案是:用兩片牛皮包住腳,這就是皮鞋(Docker集裝箱)。那麼,你領悟到什麼呢? 至少明顯知道第2方案可帶來可觀的經濟效益。
傳統的虛擬化(virtualization)技術就至關於在各道路(實體機器)上鋪一層牛皮(VM, 虛擬機),而後讓國王的腳(App)在牛皮(VM)上走路(執行)。傳統上雲平臺採起虛擬化手段來知足用戶個別的資源需求分配,以及確保其可用性和隔離性。然而不管是KVM仍是Xen等Guest OS都很浪費資源又難於管理, 都不如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勢不可擋。