Cloud Foundry 和 Docker 有什么区别?

What is the difference between Cloud Foundry and Docker?

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

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

感谢您的帮助。

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

Cloud Foundry 在更高的抽象层工作,应用程序是第一个 class 概念。 Cloud Foundry 使用类似于 docker 的容器化技术来构建可移植图像,然后 运行 它们,但它是一个实现细节,您不需要指定所有细节。在较新版本的 Cloud Foundry 中,还将支持 docker 图像,因此您可以根据需要指定详细信息,但它也有一个 "buildpack" 工作流程,它将自动检测 Java当您推送您的应用程序时,应用程序将知道在 Java 运行 构建图像时包含所有必要的东西。

使用 Cloud Foundry,由于应用程序和应用程序管理是第一个 class 概念,并且由于它在更高级别运行,因此您可以免费获得各种东西。例如,您可以轻松地水平扩展您的应用程序(添加实例),例如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 and Cloud Foundry on BOSH-Lite

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

Pivotal Web Services and IBM BlueMix

还有许多非 CF 项目旨在围绕核心 docker 技术放置平台层,包括 运行-您自己的服务和托管服务类型。

Google's Kubernetes project and Amazon Container Service

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