Linux中國

走向 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國