Cloud Foundry和Docker有什么区别?

Jam*_*mes 61 paas cloud-foundry docker pivotal-cloud-foundry

我是一名Java开发人员.我们使用Weblogic来托管我们的应用程序.我被告知要考虑用开源替代方案替换weblogic.我们计划使用SpringBoot.我们也在关注Docker/Cloud Foundry.然而Docker/Cloud Foundry对我来说是一个新的领域.

  1. 有人可以告诉我Cloud Foundry和Docker之间的区别吗?
  2. 如果我们使用Docker而不是Cloud Foundry,我们错过了什么?
  3. 如果我们使用Cloud Foundry但不使用Docker,我们错过了什么?

谢谢您的帮助.

Ami*_*pta 133

Docker是一种用于创建和运行Linux"容器"的技术.从某种意义上说,您可以将它们视为轻量级VM.SpringBoot应用程序的docker容器将包含一个docker镜像,它基本上包含一个文件系统,其中包含运行应用程序所需的所有内容(JVM,源代码等)和docker容器元数据,它告诉docker守护程序如何在图像中运行应用程序(例如,要设置的环境变量,要公开的端口,要运行的命令等).docker守护程序将使用Linux功能(如cgroup和内核命名空间)与主机上运行的其他进程隔离运行容器.Docker有点低级,因为你需要指定进入图像的所有内容,它会运行任意内容,即放入图像并告诉它运行的任何内容.您获得的docker容器非常便携,因此您可以在本地构建,测试和运行docker容器以进行开发,然后将该容器运送到也在其上运行docker守护程序的生产主机,并且非常有信心你得到完全相同的东西.

Cloud Foundry在更高的抽象层工作,应用程序是一流的概念.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 - 运行过程死亡,或VM所在的硬件集群死亡,Cloud Foundry将自动恢复您的实例.

docker守护程序是一个可以在任何Linux机器上运行的进程.因此,如果您正在做一些小而简单的事情,并且您需要自己完成大部分设置,那么使用docker在本地和开发中更容易启动和运行.使用docker,访问和共享您创建的docker镜像也更容易,因此一旦您创建了一个图像,就可以将它放在docker存储库中,然后您可以在任何其他docker守护程序上运行它.使用Cloud Foundry,构建的映像通常是一个实现细节,您实际上无法访问它,因此,例如,您无法提取该映像并在另一个Cloud Foundry安装上运行它.

有各种项目旨在使Cloud Foundry更易于访问和设置,同时仍然为您提供PaaS的许多好处.其中一些项目还旨在允许您使用docker和docker的优势进行组合,同时还可以从Cloud Foundry获得许多PaaS优势.

请参阅BOSH-Lite上的LatticeCloud Foundry.

还有几个托管的Cloud Foundry服务.

请参阅Pivotal Web服务IBM BlueMix

还有很多非CF项目旨在围绕核心docker技术建立一个平台层,包括自己运行和托管服务.

查看Google的Kubernetes项目亚马逊容器服务

完全披露:我是Pivotal的Cloud Foundry的软件工程师