我是一名Java开发人员。我们使用Weblogic来托管我们的应用程序。我被告知要考虑用开源替代方案替换weblogic。我们计划使用SpringBoot。我们也在关注Docker / Cloud Foundry。然而Docker / Cloud Foundry对我来说是一个新的领域。
感谢您的帮助。
答案 0 :(得分:128)
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优势。
请参阅Lattice和Cloud Foundry on BOSH-Lite。
还有一些托管的Cloud Foundry服务。
请参阅Pivotal Web Services和IBM BlueMix
还有很多非CF项目旨在围绕核心docker技术建立一个平台层,包括自己运行和托管服务。
请参阅Google's Kubernetes project和Amazon Container Service
完全披露:我是Pivotal的Cloud Foundry的软件工程师