走向 Docker

d3fw 9年前發布 | 9K 次閱讀 Docker

走向 Docker

[TL;DR] 這是系列的第一篇文章,這系列講述了我的公司如何把基礎服務從PaaS遷移到Docker上。如果你愿意,你可以直接跳過介紹(這篇文章)直接看技術相關的話題(鏈接在頁面的底部)。


上個月,我一直在折騰開發環境。這是我個人故事和經驗,關于嘗試用Docker簡化Rails應用的部署過程。

當我在2012年創建我的公司 – Touchware時,我還是一個獨立開發者。很多事情很小,不復雜,他們不需要很多維護,他們也不需要部署到很多機器上。經過過去一年的發展,我們成長了很多(我們現在是是擁有10個人的團隊)而且我們的服務端的程序和API無論在范圍和規模方面都有增長。

第1步 - Heroku

我們還是個小公司,我們需要讓事情運行地盡可能平穩。當我們尋找可行的解決方案時,我們打算堅持用那些可以幫助我們減輕對硬件依賴負擔的工具。由于 我們主要開發Rails應用,而Heroku對RoR、常用的數據庫和緩存(Postgres/Mongo/Redis等)有很好的支持,最明智的選擇就 是用Heroku 。我們就是這樣做的。

Heroku有很好的技術支持和文檔,使得部署非常輕松。唯一的問題是,當你處于起步階段,你需要很多開銷。這不是最好的選擇,真的。

第2步 - Dokku

為了嘗試并降低成本,我們決定試試Dokku。Dokku,引用GitHub上的一句話

Docker 驅動的 mini-Heroku,只用了一百來行的 bash 腳本

我們啟用的DigitalOcean上的很多臺機器,都預 裝了Dokku。Dokku非常像Heroku,但是當你有復雜的項目需要調整配置參數或者是需要特殊的依賴時,它就不能勝任了。我們有一個應用,它需要 對圖片進行多次轉換,我們把我們Rails應用的托管到基于Dokku的Docker容器,但是無法安裝一個適合版本的imagemagick到里面。盡 管我們還有很多應用運行在Dokku上,但我們還是不得不把一些遷移回Heroku。

第3步 - Docker

幾個月前,由于開發環境和生產環境的問題重新出現,我決定試試Docker。簡單來說,Docker讓開發者容器化應用、簡化部署。由于一個 Docker容器本質上已經包含項目運行所需要的所有依賴,只要它能在你的筆記本上運行地很好,你就能確保它將也能在任何一個別的遠程服務器的生產環境上 運行,包括Amazon的EC2和DigitalOcean上的VPS。

就我個人的看法來說,Docker 特別有意思的原因是:

  • 它促進了模塊化和關注點分離:你只需要去考慮應用的邏輯部分(負載均衡:1個容器;數據庫:1個容器;web服務器:1個容器);
  • 在部署的配置上非常靈活:容器可以被部署在各種硬件上,也可以容易地重新部署在不同的服務器和不同的提供商;
  • 它允許非常細粒度地優化應用的運行環境:你可以利用你的容器來創建鏡像,所以你有很多選擇來配置環境。

它也有一些缺點:

  • 它的學習曲線非常的陡峭(這是從一個軟件開發者的角度來看,而不是經驗豐富的運維人員);
  • 搭建環境不簡單,尤其是還需要自己搭建一個私有的registry/repository (后面有關于它的詳細內容)。

下面是一些提示。這個系列的最后一周,我將把他們和一些新的放在一起。


在下面的文章中,我們將看到如何建立一個半自動化的基于Docker的部署系統。


via: http://cocoahunter.com/2015/01/23/docker-1/

作者:Michelangelo Chasseur 譯者:mtunique 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

 本文由用戶 d3fw 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!