如何利用Linux容器實現可移植的應用部署

來源:互聯網
上載者:User

Docker是一種在Linux容器裡運行應用的開源工具,一種輕量級的虛擬機器。除了運行應用,Docker還提供了 一些工具,藉助Docker Index或自己託管的Docker註冊表對進行了集裝箱化處理的應用進行分發,從而簡化複 雜應用的部署過程。

我將在本文介紹如今在部署複雜系統時公司所面臨的挑戰,Docker怎樣有效地解決這個問題,以及Docker 的其他用例。

部署的挑戰

伺服器應用的部署已經越來越複雜了。把幾個Perl指令碼拷貝到正確目錄就完成伺服器應用的安裝,這種時 代已經一去不複返了。如今的軟體有很多類型的需求:

對已安裝軟體和庫的依賴(“Python版本高於2.6.3,使用Django 1.2”)

依賴於正在啟動並執行服務(“需要一個MySQL 5.5資料庫和一個RabbitMQ隊列”)

依賴於特定的作業系統(“在64位的Ubuntu Linux 12.04上構建、測試”)

資源需求:

最小的可用記憶體(“需要1GB的可用記憶體”)

能綁定特定的連接埠(“綁定80和443連接埠”)

我們來看一個相對簡單的應用的部署:Wordpress。Wordpress的安裝通常要求:

Apache 2

PHP 5

MySQL

Wordpress源碼

一個Wordpress MySQL資料庫,配置Wordpress使用該資料庫

Apache的配置:

載入PHP模組

支援URL重寫和.htaccess檔案

指向WordPress源碼的DocumentRoot

在伺服器上部署、運行這樣一個系統,我們可能會遇到下面的問題和挑戰:

隔離性:如果我們已經在這個伺服器上部署了不同的網站,已有的網站只能在nginx上運行,而Wordpress 依賴於Apache,這時我們就會有麻煩:它們都監聽80連接埠。同時運行兩個網站是可以的,但需要調整配置(修 改監聽連接埠),設定反向 Proxy等。庫層級也會出現類似的衝突,如果還要運行一個仍然依賴PHP4的老應用就會 出問題,因為Wordpress不再支援PHP4,同時運行PHP4和PHP5則非常困難。運行在同一個伺服器上的應用沒有 互相隔離(在檔案系統層級和網路層級),所以它們可能會互相衝突。

安全性:Wordpress的安全記錄並不是非常好。所以還是給它建立個沙箱,至少駭客入侵時不會影響其他運 行的應用。

升級、降級:升級應用一般會覆蓋現有檔案。升級過程中會發生什嗎?系統要關閉嗎?如果升級失敗,或 者不對該怎麼辦?我們怎樣快速回退到先前的版本?

快照、備份:一旦所有的內容都設定好,就給系統建立一個“快照”,以便能備份快照,甚至 能移到另一個伺服器上再次啟動,或者拷貝到多個伺服器上以備不時之需。

重複性:系統出新版本之後,比較好的做法是先在測試基礎設施上自動部署並測試,然後再發布到生產系 統。通常會利用諸如Chef、Puppet等工具在伺服器上自動安裝一堆包,等一切內容都就緒後,再在生產系統上 運行相同的部署指令碼。這在百分之九十九的情況下都沒有問題。但有百分之一的例外,在部署到測試環境和生 產環境之間的時間跨度裡,你依賴的包在包倉庫裡有了更新,而新版本並不相容。結果生產環境的設定和測試 環境不同,還有可能破壞生產系統。假如沒有控制部署的每一個方面(例如託管自己的APT或YUM倉庫),持續 在多個階段(比如測試、預演、生產環境)重複搭建出完全相同的系統就很困難。

資源限制:如果我們的Wordpress耗費CPU資源,並佔用了所有的CPU周期,導致其他應用無法做任何事情怎 麼辦?如果它用盡了全部可用的記憶體呢?或者瘋狂寫日誌阻塞磁碟呢?要是能限制應用的可用資源,比如CPU 、記憶體和磁碟空間,就會非常方便。

易於安裝:也許有Debian或CentOS包,抑或是能自動執行所有複雜步驟並安裝Wordpress的Chef菜譜。但這 些菜譜很難穩定下來,因為它們需要考慮目標系統上可能的系統配置。很多情況下,這些菜譜只能在乾淨的系 統上運行。因此,你不太可能更換成自己的包或Chef菜譜。這樣的話,安裝就是個複雜的系統工程,而不是午 休期間就能搞定的事情。

易於移除:軟體應該能輕鬆、乾淨地移除,不留痕迹。但部署應用通常要調整已有的設定檔、設定狀態 (MySQL資料庫的資料,日誌),完全移除應用也變得不那麼容易。

那我們應該如何解決這些問題呢?

虛擬機器!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.