2015-06-13 75 views
45

我是Java開發人員。我們使用Weblogic來託管我們的應用程序。我被告知要考慮用開源替代品替代weblogic。我們正在計劃使用SpringBoot。我們也在考慮Docker/Cloud Foundry。然而Docker/Cloud Foundry對我來說是一個新領域。Cloud Foundry和Docker有什麼區別?

  1. 有人能告訴我Cloud Foundry和Docker的區別嗎?
  2. 如果我們使用多克但不Cloud Foundry的,什麼是我們錯過了?
  3. 如果我們使用的Cloud Foundry但不是多克,什麼是我們錯過了?

謝謝您的幫助。

+0

這將是更正確與[看守]比較多克(https://開頭的github .com/cloudfoundry/warden)(在CF的引擎下使用)。 –

+0

http://heidloff.net/nh/home.nsf/article.xsp?id=20.02.2015092308NHEBUJ.htm – satks

+1

您無法將PaaS(平臺即服務)與Container技術進行比較。容器技術只是Cloud Foundry的一小部分。 –

回答

105

泊塢窗是用於創建和運行Linux的技術的「容器」。從某種意義上講,你可以把它們看作輕量級的虛擬機。一個用於SpringBoot應用程序的docker容器將包含一個docker鏡像,該鏡像基本上包含一個文件系統,其中包含運行應用程序所需的所有內容(JVM,源代碼等)以及docker容器元數據,該元數據告訴docker守護進程在圖像中運行應用程序(例如,要設置的環境變量,要顯示的端口,要運行的命令等)。 docker守護進程將使用諸如cgroups和內核命名空間之類的Linux特性來獨立運行主機上運行的其他進程的容器。 Docker有點低級,因爲你需要指定進入鏡像的所有東西,它會運行任意的東西,也就是無論你放入鏡像並告訴它運行。您獲得的docker容器非常便於攜帶,因此您可以在本地構建,測試和運行Docker容器以進行開發,然後將該容器運送到生產主機,該主機上還運行了Docker守護程序,並且相當有信心你會得到完全相同的東西。

雲鑄造工作在更高的抽象層,用應用程序是第一類的概念。 Cloud Foundry使用與docker類似的容器化技術來構建可移植的圖像,然後運行它們,但這是一個實現細節,您無需指定所有細節。在更新版本的Cloud Foundry中,Docker鏡像也將得到支持,因此您可以根據需要指定細節,但它也有一個「buildpack」工作流程,在您推送應用程序時它會自動檢測Java應用程序,並知道包括構建映像時Java運行時所需的所有東西。

隨着Cloud Foundry的,因爲應用程序和應用程序管理是一流的理念,因爲它在更高層次上運行,你會得到各種各樣的東西是免費的。例如,您可以輕鬆地水平縮放您的應用程序(添加實例),例如cf scale my_app -i 5或垂直,cf scale my_app -m 2G(爲每個實例設置分配的內存)。您將獲得流式應用程序日誌:cf logs my_app。 Cloud Foundry爲您提供了大量免費的容錯功能,因此如果您的某個應用程序實例崩潰,或者運行應用程序容器本身的進程崩潰(類似於docker守護進程),或者運行容器的宿主虛擬機 - 流程進程死亡或該VM所在的硬件集羣中斷,Cloud Foundry將自動恢復您的實例。

的碼頭工人守護進程是一個過程,你可以在任何Linux機器上運行。所以,如果你做的是簡單而小巧的事情,而且你需要自己完成大部分設置,那麼使用docker在本地和開發中啓動和運行起來會更容易。通過docker,訪問和共享您創建的docker映像也變得更加容易,因此,一旦創建了映像,就可以將其放入docker倉庫,然後在任何其他docker守護程序中運行它。使用Cloud Foundry時,構建的映像通常是實現細節,您無法真正訪問它,因此您無法提取該映像並在另一個Cloud Foundry安裝中運行該映像。

有各種各樣的項目旨在使Cloud Foundry更易於訪問和更容易設置,同時仍然爲您提供PaaS的諸多好處。其中一些項目還旨在讓您結合使用Docker和Docker的好處,同時還可以從Cloud Foundry獲得大量PaaS優勢。

請參閱LatticeCloud Foundry on BOSH-Lite

還有幾個託管的Cloud Foundry服務。

Pivotal Web ServicesIBM BlueMix

也有很多打算把平臺層圍繞核心技術的碼頭工人非CF項目,在這兩種運行你自己和託管業務品種。

Google's Kubernetes projectAmazon Container Service

全面披露:我是一個軟件工程師在Cloud Foundry上工作的樞紐

+0

Cloud Foundry是否支持多個Docker容器?它支持多個端口嗎?我們想安裝ELK堆棧,我們需要三個端口。 – powder366

+0

是來自Internet的入站流量端口,還是用於容器到容器通信的端口?如果是後者,那麼你應該可以做到這一點。您可以看到我如何在Cloud Foundry應用服務的實例[此處](https://gist.github.com/Amit-PivotalLabs/7c86c92aae3123ac809e81795a41acfa#deploy-the-spark-cluster)上部署Spark,其中涉及推送多個Docker映像並允許他們在數百個端口上相互交談(因爲這就是Spark的工作原理)。 –

+0

來自互聯網的入站流量,即使用普通的Kibana和Elasticsearch WEB界面命名兩個。另外爲什麼容器不能保持狀態?我們有重新啓動時想保留在容器中的數據。 – powder366