2015-06-13 71 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