【问题标题】:What is the difference between Cloud Foundry and Docker?Cloud Foundry 和 Docker 有什么区别?
【发布时间】:2015-08-29 11:34:56
【问题描述】:

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

  1. 谁能告诉我 Cloud Foundry 和 Docker 的区别?
  2. 如果我们使用 Docker 而不是 Cloud Foundry,我们会错过什么?
  3. 如果我们使用 Cloud Foundry 而不是 Docker,我们会错过什么?

感谢您的帮助。

【问题讨论】:

  • 将 Docker 与Warden(在 CF 引擎下使用)进行比较会更正确。
  • 您无法将 PaaS(平台即服务)与容器技术进行比较。容器技术只是 Cloud Foundry 的一小部分。

标签: docker cloud-foundry paas


【解决方案1】:

Docker 是一种用于创建和运行 Linux“容器”的技术。在某种意义上,您可以将这些视为轻量级虚拟机。 SpringBoot 应用程序的 docker 容器将包含一个 docker 映像,它基本上包含一个文件系统,其中包含运行您的应用程序所需的所有东西(JVM、您的源代码等),以及 docker 容器元数据,它告诉 docker 守护进程如何在映像中运行应用程序(例如要设置哪些环境变量、要公开哪些端口、要运行哪些命令等)。 docker 守护进程将使用 Linux 功能(例如 cgroups 和内核命名空间)来运行容器,与主机上运行的其他进程隔离开来。 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 优势。

请参阅 LatticeCloud Foundry on BOSH-Lite

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

Pivotal Web ServicesIBM BlueMix

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

Google's Kubernetes projectAmazon Container Service

全面披露:我是一名在 Pivotal 从事 Cloud Foundry 的软件工程师

【讨论】:

  • Cloud Foundry 是否支持多个 Docker 容器?它是否支持多个端口?我们要安装 ELK 堆栈,需要三个端口。
  • 端口是用于来自 Internet 的入站流量,还是用于容器到容器的通信?如果是后者,那么你应该能够做到这一点。您可以看到我是如何在 Cloud Foundry 应用程序服务here 的实例上部署 Spark,这涉及推送多个 Docker 映像并允许它们通过数百个端口相互通信(因为这显然是 Spark 的工作方式)。
  • 来自互联网的入站流量,即使用普通的 Kibana 和 Elasticsearch WEB 界面来命名两个。另外为什么容器不保持状态?我们有数据希望在重新启动时保留在容器中。
  • 值得一提的是Cloud Foundry默认使用Garden进行容器管理docs.cloudfoundry.org/concepts/architecture/garden.html你可以配置CF使用Dockerdocs.cloudfoundry.org/adminguide/docker.html作为选项
  • @AB 容器运行时和支持的图像格式是单独的关注点。当我写回复(2015 年)时,我说“[i] 在较新版本的 Cloud Foundry 中,也将支持 docker 映像。”到目前为止,Cloud Foundry 已经支持 Docker 镜像很长一段时间了。此外,很长一段时间以来,Cloud Foundry 的 Diego 调度程序与 Garden 容器运行时 API 通信,但实际的容器运行时实现已被替换为 runc
猜你喜欢
  • 2016-10-21
  • 2016-10-24
  • 2019-06-22
  • 2020-06-10
  • 1970-01-01
  • 2021-05-24
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多