就像在火星上種馬鈴薯?看看人家怎麼在大資料分析中使用Docker

來源:互聯網
上載者:User

標籤:

三十年後,當馬特·達蒙回憶起自己波瀾壯闊的一生,最令他回味的,也許不是參加了諾曼底灘頭的迷茫戰鬥《拯救大兵瑞恩》,不是在失憶的驚惶中流亡天涯《諜影重重》,也不是冰天雪地裡30多年的春秋大夢《星際穿越》,而是紅色星球上種馬鈴薯的日子《火星救援》。

 

據說,空間站宇航員已經食用過了太空生長的萵苣。NASA一位植物學家也稱,人類可以在火星上栽種馬鈴薯,而且可種植的不止馬鈴薯一種。2014年,荷蘭就有一群好奇的科學家,已經在類比月球土和類比火星土上,種植了西紅柿、胡蘿蔔、小麥等14種農作物。

 

所以,那個15歲起就被美國國家實驗室聘為軟體工程師的『太空宅男』安迪·威爾,即使寫小說,也是很靠譜的!

 

看完『火星救援』,今年值得期待的科幻大片就剩『星戰7』了。

 

據說『星戰7』在北美的預售票房就超過了5000萬美元,70%都是18-49歲的男粉絲,平均年齡在34歲,67%的人都會在上映一周之內就去一睹為快……

 

以上這些資料都是由一家叫Movio的公司發布的,Movio是幹嘛的呢?

 

Movio主要有兩個產品,Movio Cinema和Movio Media,Movio Cinema主要和各大影院合作(已經覆蓋了北美52%的熒幕,全球24.5%),通過大資料分析為影院的顧客提供個人化的服務;Movio Media則主要服務於電影的製造商和發行商,利用Movio Cinema上收集到的資料,為製片商和發行商提供有效建議。總之就是一家立志用大資料分析和互連網改變電影產業的公司。

 

而Movio正是Docker的重度使用者。Movio為了使其代碼能在日益複雜的同時,保持彈性擴充,開始採用微服務架構和Docker。以下內容來自Movio的技術部落格,主要講述了其如何在開發環境中使用Docker。

Docker將應用封裝在一個『完全的』OS環境中,並運行在一個容器裡。容器和虛擬機器很類似,但是更像物理機:比如,記憶體並不是提前分配給容器的,需要容器向主機動態申請。


使用容器意味著庫依賴(Library dependencies)可以獨立於主機系統,被提前安裝好。其它的依賴,比如設定檔也可以被提前配置好預設值,並放在合適的位置。有了Docker就相當於每個應用,不管在任何作業系統中,都能有一套標準的環境以相同的方式運行起來。主機作業系統中安裝的庫(Library)和軟體包(package)不會影響到應用,因為這些應用是相互獨立的。

 

Docker在Movio的開發過程中主要是這麼用的:

Run anywhere

程式猿們對OS X和Linux多個發行版可謂各有所愛,由此造成的開發環境不統一問題,是非常痛苦的。而應用運行在容器中,意味著每個人都能依賴於相同的配置。而當你需要一些個人化配置時,也可以在啟動容器時設定參數。

比如,你可以在容器外掛載一個volume,儲存容器過程中產生的資料。比如,你有一個資料庫容器,你希望這個容器停止或被刪除後,其中的資料能夠儲存下來。

為方便進行相關實踐,可在一些容器平台上進行測試。比如靈雀雲(www.alauda.cn)也提供了持久化儲存服務,將雲端儲存抽象成最直觀的儲存卷,可以直接掛在容器上,就像本地操作Docker的儲存卷一樣方便。在儲存卷基礎上,為了進一步提升資料的持久性,靈雀雲還提供“儲存卷備份”,可用於抓取儲存卷閃照並進行儲存。

 

方便各個組件間的整合

如果你有一個微服務,需要和另外一個小組維護的微服務做整合,運行docker pull就可以將那個微服務下載到在你的環境上,都不用擔心環境依賴的問題。

這個過程完全複製了各個服務在生產環境中的互動,這也使得我們相信在測試環境中看到的結果,會被完全地反映到生產環境中。

靈雀雲支援多容器發行管理,與docker-compose相容,可通過YAML檔案描述應用的容器組件,以及容器間的依賴,並一鍵部署完整的多容器應用。

 

可組合的Docker鏡像

基於此,可以簡單地複用之前做過的工作,我們有一系列的核心的基礎鏡像,同時也意味著我們的鏡像都基於相同的基礎。同時,各個組之間也可以複用鏡像。

Docker鏡像是分層管理的,每個部分都被實現為其中一層,並且可以共用base層,帶來的好處有2個:減小了Docker庫的,縮短了下載新鏡像所用的時間。

靈雀雲提供高效能本地Registry服務用於建立私人、公有鏡像倉庫,並提供上傳、下載、構建及託管的全方位鏡像服務

加強開發、測試和營運的協作

用了Docker後,開發人員會更具有全域思維,他們會有意識地去思考在開發環境之外,運行這個應用還有哪些需要。

 

而測試環境將是生產環境的複製,並且是標準化的,因為Docker鏡像都是標準化的,pull下來就能馬上運行起來,不需要再根據文檔一步步地配置。

 

Docker帶來的挑戰

Docker的實現機制也意味著會有很多的基礎鏡像依賴。例如,我們有一個Clojure寫的微服務,它是基於Clojure鏡像構建的,但Clojure鏡像又是基於Java鏡像構建的,Java鏡像又要基於一個通用的基礎鏡像。一旦這個基礎鏡像發生了改變,所有的中間鏡像都要重新build,這無疑增加了額外的開銷。

由於Docker是基於Linux核心的,在OS X系統上就需要在虛擬機器中運行一個Linux的作業系統。官方的工具是基於VisualBox的,檔案和檔案夾要先mount到VM上,再mount到Docker容器,儘管這個工具可以自動做到這些,但是chown和chmod的操作無法工作。

OS X中檔案名稱是不區分大小寫,但是大部分Linux系統都是區分的。如果不正確的命名恰好在掛載路徑中出現,就會找不到這個路徑。

以上這些挑戰是在本地主機環境中使用Docker會遇到的問題,如果使用CaaS服務,比如靈雀雲都可以避免以上的問題,將您的精力放到核心業務上,同時享受Docker帶來的諸多好處!

 

總結

在使用Docker的初期,肯定會有一個學習曲線,但是總體來說,Docker確實提高了我們的生產效率。在以往,新員工入職需要數天才能配置好本地環境,並且一直會被環境問題所困擾。有了Docker,生產環境對本地環境的依賴變得很小。隨著我們的發展,這種效率的提升變得越來越明顯。

就像在火星上種馬鈴薯?看看人家怎麼在大資料分析中使用Docker

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.