在我去年的一篇博客自動化的高效團隊開發(fā)環(huán)境提到了用vagrant來統(tǒng)一開發(fā)團隊的開發(fā)環(huán)境。用vagrant基本上解決了開發(fā)環(huán)境異構(gòu)的問題,但VM(vagrant使用virtual box)footprint很大,不便于頻繁更新,啟動銷毀速度還很慢。所以,對于文中提到的并行開發(fā)的場景,尤其是快速迭代的開發(fā)周期,支持起來還是很別扭: 以圖中week 3第一天為例:Dalian已經(jīng)部署到線上,Edingburgh交付測試,而Florence正在開發(fā)中。此刻Dalian隨時會爆出優(yōu)先級很高的customer issue;Edingburgh可能會有大量的QA issue等待修復;而Florence上的任務還如火如荼。 這意味著每周要生成至少一個公共VM,對應當前版本的代碼和樣本數(shù)據(jù)。如有需要(比如Dalian同時爆出幾個bug,需要多人同時跟進調(diào)試),相關(guān)的工程師每人還需要一個自己的私有VM。 對于devops,這是管理的夢魘。 還好,docker出現(xiàn)了。我們看看docker有什么本領(lǐng):
頭兩點讓docker在系統(tǒng)中的footprint很小,使用或者不使用docker對應用程序來說幾乎沒有差別。最后一點是最關(guān)鍵的,它讓你能靈活地基于某個現(xiàn)存的image,和最新的軟件版本,最新的線上樣本數(shù)據(jù)一起,構(gòu)建一個container。 vagrant無法做到這一點。一旦你創(chuàng)建了一個VM,你的環(huán)境,應用程序和數(shù)據(jù)都被綁定到一起了,同一個環(huán)境,不同的應用程序版本(或數(shù)據(jù)),需要創(chuàng)建不同的VM。 這是我之前構(gòu)想的用vagrant構(gòu)建的開發(fā)環(huán)境的一個例子: 如果使用docker,則簡單很多。多數(shù)時候我們可以使用相同的image,配以不同的運行時軟件和數(shù)據(jù),如下圖所示: 對應上面vagrant的開發(fā)環(huán)境,docker的開發(fā)環(huán)境可以是這樣子的: Docker(或者類似思想的軟件)是(服務端)軟件開發(fā)和部署的未來,對此,我深信不疑。 本文轉(zhuǎn)載自知乎,原文鏈接:Docker: 優(yōu)雅地部署 |
|