我們不妨先看下面兩個場景。
場景一: 程式設計師A寫完程式碼,自己執行也沒有出錯,於是提交了程式碼,打個電話約上朋友,準備晚上出去嗨,但是測試員B告訴他程式碼有問題,需要解決一下。程式設計師A心想不會吧,到最後卻發現是因為兩人的執行環境不一致,從而導致的錯誤。
場景二: 快下班了,運維A聽著小曲,喝著茶,想著和朋友B的約定,突然boss告訴他,客戶C需要再加幾臺伺服器,現在的伺服器不夠用。運維A內牛滿面,不得不加班,登上多個伺服器,安裝環境,部署產品。
上面兩個場景在軟體行業經常出現,這個是為什麼呢?
開發者都知道,他們需要有很多臺不同配置的伺服器,原因在於,如果只有一個開發環境,一個專案使用Python2.7,另一個使用Python3.0,那需要進行一番設定。最頭疼的是,這些軟體環境升級還好說,如果需要降級就很麻煩,各種依賴庫版本各種打架。因此,通常開發者都要求為不同的專案配備符合本專案軟體環境要求的開發伺服器,這就帶來了大量不同軟體環境伺服器安裝的需求。
有的時候,效能也出來搗亂,比如自己寫的程式在配備了酷睿一代CPU的開發環境上執行的很吃力,想換到配備了酷睿五代CPU的機器,但是酷睿五代機器卻沒有同樣的作業系統和軟體環境,怎麼辦?只能在它上面按照舊機器的軟體環境要求一模一樣地安裝一遍。這些問題弄的人頭大以至於無法專心寫程式碼,就連運維人員和測試人員也被折磨得疲憊不堪。
容器技術的出現很大的解決了這些問題。而docker正是其一。因此,脈衝雲使用的便是容器技術,採用的docker技術。
瞭解docker之前就必須瞭解三個基本概念:映象、容器、倉庫。
脈衝雲用docker將使用者應用和執行環境及其依賴封裝為一個映象。
容器是映象執行的例項(映象很像開發中的類,而容器就是一個個物件,一個映象可以生產多個容器。)它可以被啟動、開始、停止、刪除。
倉庫是存放映象檔案的場所。當使用者建立了自己的映象之後可以將映象推送到公有或私有倉庫。 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。 公開倉庫推薦Docker Hub(https://hub.docker.com) 私有倉庫推薦脈衝雲(https://maichong.io)。每個使用者都可以有自己的獨立私有倉庫,還支援一鍵部署。
使用Docker,開發人員可以使用映象來快速構建一套標準的開發環境;開發完成之後,測試和運維人員可以直接使用相同環境來部署程式碼。Docker可以快速建立和刪除容器,從而實現快速迭代,大量節約開發、測試、部署的時間。