Docker究竟是什么 為什么這么流行 它的優(yōu)點和缺陷有哪些?
Docker是什么?
簡單得來說,Docker是一個由GO語言寫的程序運行的“容器”(Linux containers, LXCs); 目前云服務(wù)的基石是操作系統(tǒng)級別的隔離,在同一臺物理服務(wù)器上虛擬出多個主機。Docker則實現(xiàn)了一種應(yīng)用程序級別的隔離; 它改變我們基本的開發(fā)、操作單元,由直接操作虛擬主機(VM),轉(zhuǎn)換到操作程序運行的“容器”上來。
Docker是為開發(fā)者和系統(tǒng)管理員設(shè)計的,用來發(fā)布和運行分布式應(yīng)用程序的一個開放性平臺。由兩部分組成:
Docker Engine: 一個便攜式、輕量級的運行環(huán)境和包管理器。(注* 單OS vs 單線程,是不是跟NodeJS特別像?)
Docker Hub: 為創(chuàng)建自動化工作流和分享應(yīng)用創(chuàng)建的云服務(wù)組成。(注* 云端鏡像/包管理 vs npm包管理,是不是跟npm特別像?)
從2013年3月20日,第一個版本的Docker正式發(fā)布到 2014年6月 Docker 1.0 正式發(fā)布,經(jīng)歷了15個月。 雖然發(fā)展歷程很短,但Docker正在有越來越流行的趨勢。
其實Container技術(shù)并非Docker的創(chuàng)新,HeroKu, NodeJitsu 等云服務(wù)商都采用了類似這種輕量級的虛擬化技術(shù),但Docker是第一個將這這種Container技術(shù)大規(guī)模開源并被社區(qū)廣泛接受的。
Docker相對于VM虛擬機的優(yōu)勢十分明顯,那就是輕量和高性能和便捷性, 以下部分摘自: KVM and Docker LXC Benchmarking with OpenStack
快運行時的性能可以獲取極大提升(經(jīng)典的案例是提升97%)
管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。
敏捷像虛擬機一樣敏捷,而且會更便宜,在bare metal(裸機)上布署像點個按鈕一樣簡單。
靈活將應(yīng)用和系統(tǒng)“容器化”,不添加額外的操作系統(tǒng),
輕量你會擁有足夠的“操作系統(tǒng)”,僅需添加或減小鏡像即可。在一臺服務(wù)器上可以布署100~1000個Containers容器。
便宜開源的,免費的,低成本的。由現(xiàn)代Linux內(nèi)核支持并驅(qū)動。注* 輕量的Container必定可以在一個物理機上開啟更多“容器”,注定比VMs要便宜。
生態(tài)系統(tǒng)正在越來越受歡迎,只需要看一看Google的趨勢就知道了, docker or LXC.
還有不計其數(shù)的社區(qū)和第三方應(yīng)用。
云支持不計其數(shù)的云服務(wù)提供創(chuàng)建和管理Linux容器框架。
有關(guān)Docker性能方面的優(yōu)勢,還可參考此IBM工程師對性能提升的評測,從各個方面比VMs(OS系統(tǒng)級別虛擬化)都有非常大的提升。
Performance Characteristics of VMs vs Docker Containers by Boden Russel (IBM)
Performance characteristics of traditional v ms vs docker containers
有爭論的部分任何項目都會有爭論,就像Go,像NodeJS, 同樣Docker也有一些。
能否徹底隔離在超復(fù)雜的業(yè)務(wù)系統(tǒng)中,單OS到底能不能實現(xiàn)徹底隔離,一個程序的崩潰/內(nèi)存溢出/高CPU占用到底會不會影響到其他容器或者整個系統(tǒng)?很多人對Docker能否在實際的多主機的生產(chǎn)環(huán)境中支持關(guān)鍵任務(wù)系統(tǒng)還有所懷疑。 注* 就像有人質(zhì)疑Node.JS單線程快而不穩(wěn),無法在復(fù)雜場景中應(yīng)用一樣。
不過可喜的是,目前Linux內(nèi)核已經(jīng)針對Container做了很多改進,以支持更好的隔離。
GO語言還沒有完全成熟Docker由Go語言開發(fā),但GO語言對大多數(shù)開發(fā)者來說比較陌生,而且還在不斷改進,距離成熟還有一段時間。此半git、半包管理的方式讓一些人產(chǎn)生不適。
被私有公司控制Docker是一家叫Dotcloud的私有公司設(shè)計的,公司都是以營利為目的,比如你沒有辦法使用源代碼編繹Docker項目,只能使用黑匣子編出的Docker二進制發(fā)行包,未來可能不是完全免費的。 目前Docker已經(jīng)推出面向公司的企業(yè)級服務(wù)(咨詢、支持和培訓(xùn))。
相關(guān)文章:
1. docker容器調(diào)用yum報錯的解決辦法2. django創(chuàng)建css文件夾的具體方法3. ASP中實現(xiàn)字符部位類似.NET里String對象的PadLeft和PadRight函數(shù)4. IntelliJ IDEA創(chuàng)建web項目的方法5. 存儲于xml中需要的HTML轉(zhuǎn)義代碼6. jsp網(wǎng)頁實現(xiàn)貪吃蛇小游戲7. .NET SkiaSharp 生成二維碼驗證碼及指定區(qū)域截取方法實現(xiàn)8. CentOS郵件服務(wù)器搭建系列—— POP / IMAP 服務(wù)器的構(gòu)建( Dovecot )9. phpstudy apache開啟ssi使用詳解10. Android打包上傳AAR文件到Maven倉庫的示例
