1-docker 介紹
由PaaS到Container
2013年2月,前Gluster的CEO Ben Golub 和 dotCloud 的 CEO Solomon Hykes 坐在一起聊天時,Solomon談到想把 dotCloud 內部使用的Container容器技術單獨拿出來開源,然后圍繞這個技術開一家新公司提供技術支持。28歲點Solomon在使用python開發dotCloud的PaaS云時發現,使用LXC(Linux Container)技術可以打破產品發布過程中應用工程師和系統工程師兩者之間無法輕松協作發布產品的難題。這個Container容器技術可以把開發者從日常部署的繁雜工作中解脫出來,讓開發者能專心寫好程序;從系統工程師到角度來看也是一樣的,他們迫切需要從各種混亂的部署中解脫出來,讓系統工程師專注在應用的水平擴展、穩定發布的解決方案上。他們深入交談,覺得這是一次云技術的變革,緊接著在2013年3月Docker0.1發布,拉開來基于云計算平臺發布產品方式的變革序幕。
了解paas
Docker 簡介
Docker時Docker.lnc公司開源的一個基于LXC技術之上搭建的Container容器引擎,源代碼托管在Github上,基于Go語言并遵從Apache2.0協議開源。Docker在2014年6月召開DockerConf2014技術大會吸引了IBM、Google、RedHat等業界知名公司的關注和技術支持,無論是從Github上到代碼活躍度,還是RedHat宣布REHL7中正式支持Docker,都給業界一個信號,這是一項創新的技術解決方案。就連Google公司的Computer Engine 也支持Docker在其中之上運行,國內BAT先鋒企業百度 Baidu App Engine(BAE)平臺也是以 Docker作為PasS云基礎。
Docker產生的目的就是要解決以下問題
- 環境管理復雜:從各種OS到各種中間件再到各種App,一款產品能夠成功發布,作為開發者需要關心的東西太多,且難于管理,這個問題在軟件行業中普遍存在并需要直接面對。Docker可以簡化部署多種應用實例工作,比如Web應用、后臺應用、數據庫應用、大數據應用比如Hadoop集群、消息隊列等等都可以打包成一個image部署。如下圖所示:
-
云時代的到來:AWS的成功,引到開發者將應用轉移到云上,解決來硬件管理的問題,然而軟件配置和管理香瓜的問題依然存在。Docker的出現正好能幫助軟件開發者開闊思路,嘗試新的軟件管理方法來解決這個問題。
-
虛擬化手段的變化:云時代采用標配硬件來降低成本,采用虛擬化手段來滿足用戶按需分配的資源需求以及保證可用性和隔離性。然而無論是KVM還是Xen,在Docker卡來都是在浪費資源,因為用戶需要的是高校運行環境而非OS,GuestOS即浪費資源,又難于管理,更加輕量級大LXC更佳靈活和快速:
- LXC的便攜性: LXC在 Linux 2.6 的 Kernel 里就已經存在了,但是其設計之初并非為云計算考慮的,缺少標準化的描述手段和容器的可便攜性,決定其構建出的環境難于分發和標準化管理(相對于KVM之類image和snapshot的概念)。Docker就在這個問題上做出了實質性的創新方法。
Docker 相比虛擬機的優勢
Docker 技術比虛擬機技術更為輕便快捷
Docker 可以解決虛擬機能夠解決的問題,也可以解決虛擬機由于資源要求過高而無法解
決的問題。
- 隔離應用依賴
- 創建應用鏡像并復制
- 創建易于分發的即開即用的應用或者應用鏡像
- 允許實例簡單快速擴展
- 易于測試和銷毀
Docker 的初衷是創建軟件程序可移植的輕量容器,讓軟件可以在任何安裝了 Docker 的
主機上運行,而不用關心底層操作系統。