2013-08-06 96 views
23

我是一個Linux容器的總noobot,並花了一些時間瞭解Docker,並原諒我的困惑,認爲這個問題。目前,我有一個通過capistrano部署的Rails應用程序。我的雲服務器使用Debian Wheezy發行版中的Opscode Chef進行維護。對於開發,我有一個預裝了應用程序和服務的Vagrant虛擬機。運行並部署到碼頭集裝箱的導軌

如果我要使用Docker,我的應用程序將在哪裏坐?容器還是主機?我將如何部署(生產)和共享目錄(開發)?我可以使用docker在同一臺服務器上運行所有其他服務,例如memcache,redis,postgresql等嗎?我可以想象Docker的潛力,但看不到它的實際用途。

似乎容器是未來的一部分。對從虛擬化轉變的人有什麼指導?

回答

11

如果我要使用Docker,我的應用程序在哪裏坐?

它可以坐在容器內,或者它可以坐在主機上(可以使用泊塢窗構建的應用程序複製到容器)

我將如何部署(生產)和共享目錄(發展)?

部署你的應用就意味着犯當地的容器成圖像,將其發佈 和您的服務器上運行的容器進行發佈的圖像。我還沒有嘗試在主機和容器之間共享目錄,但你可以試試這個:https://gist.github.com/jpetazzo/5668338。您也可以編寫一個Dockerfile,它可以將目錄複製到容器中的目標。 Docker的docs on building images將幫助你。

我可以在使用docker的同一臺服務器上運行所有其他服務,即memcache,redis,postgresql等嗎?

是的。您將在同一臺服務器上運行多個容器。

+1

歡呼,@Emil。偉大的迴應。 –

+0

這些附加服務可以在自己的碼頭集裝箱內,還是都可以在一個碼頭集裝箱內? – CMCDragonkai

+0

@CMCDragonkai建議的做法是在自己的容器中運行每個服務,因此它們是模塊化的:使用您的memcached映像爲多個應用運行容器,運行3個Web應用容器實例以在它們之間進行負載平衡(使用haproxy容器!)。請參閱[鏈接文檔](http://docs.docker.io/en/latest/use/working_with_links_names/)幫助容器找到彼此。您可能還喜歡[Fig](http://orchardup.github.io/fig/index.html)來運行它們。注意多個實例的'fig scale'命令。 – ches

2

我不是專家,我甚至沒有使用碼頭自己,但據我瞭解,您的應用程序坐在碼頭集裝箱內。你會理想地部署整個容器,並安裝你自己的ruby版本,等等。

最大的好處是,你可以在你的分期系統中測試完全相同的容器,然後你將運送到生產。因此,您可以使用所有安裝的C擴展,完全相同的ls命令等來測試整個系統。

+0

這是否意味着它取代了Capistrano? – ardochhigh

+0

不一定。您可以使用capistrano將其部署到碼頭集裝箱。 capistrano將你的代碼放在某個地方。碼頭工人把你的機器放在某個地方。 – udo

+0

感謝您的回答。我做了更多的閱讀,而Docker實際上看起來非常棒。雖然...還沒有完全準備好...所以我會密切關注它。 – ardochhigh