Docker究竟是什麼 為什麼這麼流行 它的優點和缺陷有哪些?
Docker是什麼?
簡單得來說,Docker是一個由GO語言寫的程式執行的“容器”(Linux containers, LXCs); 目前雲服務的基石是作業系統級別的隔離,在同一臺物理伺服器上虛擬出多個主機。Docker則實現了一種應用程式級別的隔離; 它改變我們基本的開發、操作單元,由直接操作虛擬主機(VM),轉換到操作程式執行的“容器”上來。
Docker是為開發者和系統管理員設計的,用來發布和執行分散式應用程式的一個開放性平臺。由兩部分組成:
Docker Engine: 一個行動式、輕量級的執行環境和包管理器。(注* 單OS vs 單執行緒,是不是跟NodeJS特別像?)
Docker Hub: 為建立自動化工作流和分享應用建立的雲服務組成。(注* 雲端映象/包管理 vs npm包管理,是不是跟npm特別像?)
從2013年3月20日,第一個版本的Docker正式釋出到 2014年6月 Docker 1.0 正式釋出,經歷了15個月。 雖然發展歷程很短,但Docker正在有越來越流行的趨勢。
其實Container技術並非Docker的創新,HeroKu, NodeJitsu 等雲服務商都採用了類似這種輕量級的虛擬化技術,但Docker是第一個將這這種Container技術大規模開源並被社群廣泛接受的。
好的部分
Docker相對於VM虛擬機器的優勢十分明顯,那就是輕量和高效能和便捷性, 以下部分摘自: KVM and Docker LXC Benchmarking with OpenStack
快
執行時的效能可以獲取極大提升(經典的案例是提升97%)
管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。
敏捷
像虛擬機器一樣敏捷,而且會更便宜,在bare metal(裸機)上佈署像點個按鈕一樣簡單。
靈活
將應用和系統“容器化”,不新增額外的作業系統,
輕量
你會擁有足夠的“作業系統”,僅需新增或減小映象即可。在一臺伺服器上可以佈署100~1000個Containers容器。
便宜
開源的,免費的,低成本的。由現代Linux核心支援並驅動。注* 輕量的Container必定可以在一個物理機上開啟更多“容器”,註定比VMs要便宜。
生態系統
正在越來越受歡迎,只需要看一看Google的趨勢就知道了, docker or LXC.
還有不計其數的社群和第三方應用。
雲支援
不計其數的雲服務提供建立和管理Linux容器框架。
有關Docker效能方面的優勢,還可參考此IBM工程師對效能提升的評測,從各個方面比VMs(OS系統級別虛擬化)都有非常大的提升。
Performance Characteristics of VMs vs Docker Containers by Boden Russel (IBM)
Performance characteristics of traditional v ms vs docker containers
有爭論的部分
任何專案都會有爭論,就像Go,像NodeJS, 同樣Docker也有一些。
能否徹底隔離
在超複雜的業務系統中,單OS到底能不能實現徹底隔離,一個程式的崩潰/記憶體溢位/高CPU佔用到底會不會影響到其他容器或者整個系統?很多人對Docker能否在實際的多主機的生產環境中支援關鍵任務系統還有所懷疑。 注* 就像有人質疑Node.JS單執行緒快而不穩,無法在複雜場景中應用一樣。
不過可喜的是,目前Linux核心已經針對Container做了很多改進,以支援更好的隔離。
GO語言還沒有完全成熟
Docker由Go語言開發,但GO語言對大多數開發者來說比較陌生,而且還在不斷改進,距離成熟還有一段時間。此半git、半包管理的方式讓一些人產生不適。
被私有公司控制
Docker是一家叫Dotcloud的私有公司設計的,公司都是以營利為目的,比如你沒有辦法使用原始碼編繹Docker專案,只能使用黑匣子編出的Docker二進位制發行包,未來可能不是完全免費的。 目前Docker已經推出面向公司的企業級服務(諮詢、支援和培訓)。
相關文章
- (1)微服務是什麼?它的優缺點有哪些?微服務
- 什麼是docker?docker有什麼優勢?Docker
- 解析:Python為什麼這麼流行?Python
- WebSocket有什麼優勢?有哪些特點?Web
- 什麼是海外伺服器?它的優點是什麼?伺服器
- 為什麼這麼多人學習Python,Python有哪些優勢?Python
- 韓國伺服器有哪些優勢?為什麼這麼熱門?伺服器
- 為什麼網站使用CDN加速這麼流行?網站
- python有什麼特性?為什麼這麼火?Python
- 為什麼 Laravel 這麼優秀Laravel
- 什麼是閉包?有哪些使用場景?優缺點是什麼?
- 什麼是Docker?為什麼使用docker?Docker
- 為什麼這麼多人做網校系統開發?網校系統有什麼優點?
- 為什麼要前後端分離?有什麼優缺點後端
- 什麼是Docker?Docke有哪些特性?Docker
- 為什麼Lisp沒有流行起來Lisp
- 為什麼凸優化這麼重要?優化
- Docker有哪些特點?與Linux有什麼區別?DockerLinux
- HDFS 01 - HDFS是什麼?它的適用場景有哪些?它的架構是什麼?架構
- Docker是什麼?使用Docker的好處有哪些?Docker
- ITAM是什麼?為什麼它很重要?
- 為什麼有這麼多 Python?Python
- 國密瀏覽器是什麼?有哪些?有什麼特點?瀏覽器
- django的orm有什麼優點DjangoORM
- 混合IT是什麼?基礎設施和優缺點有哪些?
- ISP代理有什麼優點?
- 為什麼域名SSL證書的價格這麼高?有哪些成本?
- 雲資料庫MySQL有什麼作用?有哪些優點?資料庫MySql
- Docker入門為什麼可以這麼簡單?Docker
- SFTP是什麼協議?優勢有哪些?與FTP有什麼不同?FTP協議
- C/S結構是什麼意思?有什麼優點?
- Python到底能做什麼?它的優點在哪?Python
- Session是什麼?它與Cookie有什麼區別?SessionCookie
- TF簽名是什麼?穩定性怎麼?有什麼優缺點?
- Python為什麼這麼火?學習python有什麼用?Python
- 為什麼會有這麼多的程式語言?
- 邊緣計算是什麼以及為什麼需要它
- 什麼是客戶分析,為什麼它很重要?