IT界中雲計算革命正在如火如荼的進行着,docker 正在引領着這個潮流。 那麼docker 是怎麼引進來的呢? Docker的CTO在下面視頻裏如此清晰的回答docker 的想法和名字的來由。
Docker是用來解決軟件軟件的發佈。思路至關的清晰,可讓咱們更好的抓住docker 的自己。
Docker 嘗試解決的問題:
如何使得軟件的發佈可靠而且迅速,也就是自動化起來? 簡單的說就是在A機器運行的程序,如何讓它也在B機器運行起來? 但這個不是一件容易的事情。
軟件愈來愈強大,也愈來愈複雜。 其中模塊愈來愈多,其之間的依賴也愈來愈複雜。此外不一樣的技術棧,也須要不一樣的運行環境。
此外運行環境基礎設施也有多種,物理界,虛擬機,不一樣配置環境的機器。以下圖。
面對如此複雜的矩陣,如何解決在A機器能夠運行在B機器運行不起來的故事呢?
debug,這是在生活中那是多麼tough的一件事。
咱們呼喚標準環境,所謂的inforstracuture as a Code.可是須要多大的努力才能獲得這樣的環境。 開發環境統一,測試環境的統一,最終的部署環境統一。 若是部署的環境是客戶機器,難道須要客戶也作一個標準環境? 那是多麼不容易的一件事呢?
做者看到問題本質,可是給出了更加優雅通用的方法。這個方法就是借鑑來自於運輸業的集裝箱。
運輸行業也面對這樣的問題,貨物的種類和運輸的基礎設施多樣性的複雜矩陣問題。
解決方案是:標準化。 集裝箱! 而後基於集裝箱,自動化。
軟件發佈也能夠作到標準化,將軟件放到一個盒子裏面,而後將其標準化。這就軟件裏面的docker.
這就是Docker,將軟件封裝到容器,造成標準化與基礎環境徹底隔離。
這樣開發,複雜將軟件打包。
雲提供商,複雜運行docker的容器。好了到此爲止,容器裏面與外面運行環境完全解耦了。 軟件開發與軟件運維這個時候能夠徹底不須要解耦了。
或許不久的將來,軟件的發佈方式就是docker,將軟件自己和其依賴庫打包到裏面; 開箱就可用。
雲時代到了,docker天然就去佔領雲運行環境。 雲分三層( Infrastructure As a service, Platform as a Service, Software as a Service), docker天然而然的去替代中間那一層。 也就是 Container as a Service.
因此各大雲服務提供商,好比 amazon, Microsoft, google,阿里雲,都對於Docker 報有更大的興趣。 很快各個提供商都提供容器服務。
另外軟件自己的功能愈來愈強大,其模塊數量增多; 爲服務架構的普遍接受,對於各類技術棧的應用,使得部署過程複雜化; 同時持續發佈,使得部署的頻率更高; 這些帶來的發佈的複雜度, docker 自然能夠用來減輕這些複雜度。
Docker 真是在正確的時間作了正確的事。