遷移至 Docker(一)

jopen 9年前發布 | 20K 次閱讀 Docker

本文是《Moving to Docker》系列的第一篇文章,這個系列的文章講述了創業公司如何把基礎服務遷移到Docker上,以及遷移過程中的經驗教訓。本文主要介紹了Touchware為什么要從Heroku遷移到Dokku,以及為什么最后又投靠Docker。

本文是遷移至Docker系列的第一篇,這個系列介紹了我所在的公司是怎么把基礎設施從PaaS遷移到Docker上的。如果你對基礎已經很了解了,可以直接看本文底部的幾個技術專題。

上個月,我一直在折騰開發環境。這是我個人的經驗和故事,關于如何在Docker上簡化Rails項目的部署工作。

當我開始創建Touchware的時候,我還是個獨立開發者。項目比較小,也不復雜,也不需要維護,甚至不需要部署到很多機器。經過去年一年的發展,我們成長為有10名員工的公司了,同樣在增長的還有我們的服務端程序和API。

Step1 Heroku

雖然我們還是個小公司,但是我們還是需要讓事情盡可能的便捷。當我們在尋找解決方案時,我們希望找到可以幫助我們減輕對硬件依賴負擔的工具。由于我們主要開發RoR項目,而Heroku不僅對RoR有很好的支持,而且還提供常用的數據庫(Postgres/Mongo/Redis等),于是我們就明智的使用了它。

Heroku有很好的技術支持和文檔說明使得部署工作非常輕松。唯一的問題是,當你的公司還處于發展階段,開銷很多,而用Heroku也不是很劃算。

Step2 Dokku

為了嘗試并降低成本,我們決定試試Dokku,引用GitHub上的一句話來說,Dokku是迷你版本的Heroku。

Docker powered mini-Heroku in around 100 lines of Bash
我們在DigitalOcean上購買了很多臺機器,都預裝了Dokku。Dokku大多時候跟Heroku很像,但是當有的項目需要調整配置參數或者是需要特殊的依賴時,它就無能為力了。我們有一個應用,它需要對圖片進行多次轉換,這導致我們找不到一個適合版本的imagemagick運行在安裝了Dokku的Docker容器內。盡管我們還有很多應用運行在Dokku上,但我們還是不得不遷移一些到Heroku。

Step3 Docker

幾個月前,由于開發環境和生產環境的問題,幾個項目需要重新調整,我決定使用Docker。Docker簡單來說就是用于容器化應用,簡化部署工作。由于一個Docker容器已經包含項目運行所需要的所有依賴,只要它能在你的筆記本上運行,就能在任何一個別的遠程服務器的生產環境上運行,包括Amazon的EC2和DigitalOcean上的VPS。

Docker IMHO特別有意思的原因是:

  • 它促進了模塊化和關注點的分離:你只需要去考慮應用的邏輯部分(負載均衡:1個容器;數據庫:1個容器;web服務器:1個容器)
  • 在部署的配置上比較靈活:容器可以被部署在大量的HW上,也可以容易地重新部署在不同的服務器或者服務提供者上。
  • 它允許非常細粒度的優化應用的運行環境:由于你可以為你的容器自己創建鏡像,就可以自己去配置環境。
  • </ul>
    它也有一些缺點:

    • 它的學習曲線非常的陡峭(這是從一個軟件開發者的角度來看,而不是經驗豐富的運維人員)。
    • 搭建環境不見得,尤其是還需要自己搭建一個私有的Registry。
    • </ul>
      在接下來的幾篇文章中,將會介紹如何搭建一個半自動化的Docker部署系統。

      • 搭建一個私有Registry(翻譯中)
      • 配置Rails項目的半自動化部署方案(翻譯中)
      • </ul>
        原文鏈接:Moving to Docker(翻譯:陳杰 審校:李穎杰)

        ===========================

        譯者介紹

        陳杰,北京理工大學計算機學院在讀博士,研究方向是自然語言處理在企業網絡信譽評價方面的應用,平時也樂于去實現一些突發的想法。在疲于配置系統環境時發現了Docker,跟大家一起學習、使用和研究Docker。

        來自:http://dockerone.com/article/169

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