Docker 將改變所有事情
Docker是一個自動化部署應用的開源引擎,它將任何應用看作為一個可以運行在任何地方的輕量、便攜及自給自足的容器。
是的。但什么是docker呢,你也許會問?讓我體驗一下。
目前為止,如果你需要在生產環境中運行的任何應用,你需要非常小心的配置環境并處理其中的所有依賴關系。
例如,如果你有一個rails應用,它運行在安裝了ruby2.0.0、最新版本的rails和Mysq數據庫的ubuntu服務器上。你需要在處理好所有依賴的基礎上將生產環境配置就緒,并在此之上部署應用。
但當有另一個Rails應用需要使用相同環境時會怎樣呢。你需要安裝另外一個與之前生產環境相同的實例來運行第二個應用。
你可能已經感覺到了docker試圖解決的問題。docker試圖使使存在潛在資源共享的應用互不影響。簡單來說docker試圖使生產應用在共享資源上運行,就像一個桌面用戶在同一系統上運行多個程序那樣。
我認為docker項目將會給服務器層面帶來幾個巨大的影響,下面我會列出。
云平臺
當前云平臺提供按需求伸縮擴張和按使用模型付費的服務(但并不完全)
提供和構建時間
目前云平臺的愿景要求你,必須維護一個絕對低限度的實例,來全天候地服務于所有應用。具體點來說,作為云服務的使用者,即使現在沒有一個用戶在使用你的應用,你也需要維護一個最低功能的實例
云程序之所以要做成這樣,是因為一些云應用的屬性,像程序的提供和構建時間這樣的,其重新啟動的時間至少需要幾分鐘。所以,為了以防萬一,你必須很好地維護一個實例。
這兒也正是Docker優勢所在, docker幾乎不存在應用的提供和構建時間,即使是開始一個docker容器,有時還不到一秒種。docker的這個特性幾乎可以讓使用者完全不需要一個占用著專門處理器,內存和磁盤空間還得全天候運行的實例了。
實例抽象
云服務提供商通過提供一個獨立的虛擬機實例來獲利。使用者根據使用這些實例的時間來付費。這些實例都是彼此隔離的,而且資源都是自己的,因此通過虛擬機實例來收費也是合理的。
在使用容器的情況下, 操作系統被許多容器共享。此外,既然這些容器沒不會一直需要一個專用的處理器和的內存。通過抽象實例付費的方法可以拋棄了,通過你使用的模型來付費的方法出現了。
專業化服務的提供商,比如數據庫托管和圖形加工處理提供商,可以大大受益于這樣的解耦實例。不是通過分配資源這樣的選擇服務多少收費,而是通過實際服務使用量這樣可插拔式的服務來收費。最后說一下,抽象底層機器將有利于衡量服務使用量
按小時支付模式
大多數的云主機提供商要求用戶按小時支付(即使你只用了15分鐘然后就把你的實例殺掉了),但這已經比原來需要購買專用硬件已經好很多了。但是,這仍然不是你只支付你所用的部分。通過像docker一樣的共享資源環境的模式,客戶只需要支付他們所用的CPU周期和內存就可以了。
開發的便利
到目前為止,開發者們被要求維護不同的開發環境和產品環境。這種不一致性不可避免的帶來了問題。Docker承諾將會通過使開發和部署在相同的容器中來消除這些情況,這也將使得開發更加容易并且少一些痛苦。