Docker - power your development and deployment

不知道有多少人聽過這東西 ;p

它是dotCloud 所開源的專案,是他們服務中相當的關鍵組件,可以看一下老闆自己在pyCon上首次披露這個開源專案時候所作的介紹 ;p

Docker – The Linux container runtime

Docker complements LXC with a high-level API which operates at the process level. It runs unix processes with s trong guarantees of isolation and repeatability across servers.

Docker is a great building block for automating distributed systems: large-scale web deployments, database clus ters, continuous deployment systems, private PaaS, service-oriented architectures, etc.

因為對於Paas來說(尤其像dotCloud這類提供大量不同服務的廠商),能夠更加彈性地達到延展性的目的是很重要的,這幾乎是 每個Paas都必須面對的問題,而dotCloud就因此開發出這篇的主角 - Docker來處理這個問題(而且 還開源實在太甘心了 ;p)

對於開發者來說最必殺的作法,就是當我需要的時候就+++(機器、容量等),不過Paas要怎麼處理這樣的需求就得想一下,因為通常使用者少說也都是用兩三項(甚至更多)以上的東西來串連起自己的服務(開發框架+資料庫+搜尋+信件...等),這麼複雜的架構下又要彈性的擴充,並不是一件簡單的事。

Docker是利用lxc(Linux Containers,沒錯所以只有linux可以用,輕量級的虛擬機器)所開發出來的,包過之後提供使用者更方便的介面來操作 - Standard Container,Docker所定義軟件部屬的最小單位,將軟件與其相依套件都封裝在其中,所以當你部屬的時候就是直接執行封裝好的Container就可以了(其實就是切虛擬環境是一樣的)。

用nodejs application作範例來說明

如果你把這個丟到公開的repository上面,其他人就可以直接docker pull <username>/<image>拉下來就可以馬上執行了。

除此之外,你也可以把自己定義好的Container放到[Repository](http://docs.docker.io/en/latest/use/workingwithreposito ry/)上面(指令幾乎跟git一樣,push、pull、commit),如果是開源專案的話,可以利用這種方式很快的讓其他參與者可以建立起測試的環境。(其實我就是因為看到有大大們在用,所以才想說來看一下這東西 ;p)

也可以參考14 Great Tutorials on Docker,裡面有不少實作的案例。

之後有機會再提一下某個基於Docker實作的有趣專案。 順帶一提,會注意到這東西是因為它是用Golang做出來的 ;p

Ferrari Lee

Read more posts by this author.

Subscribe to Ferrari != Ferrari

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!