在 App Engine 和 Compute Engine 中启动 docker 容器有啥区别?

Posted

技术标签:

【中文标题】在 App Engine 和 Compute Engine 中启动 docker 容器有啥区别?【英文标题】:What's the difference between launching a docker container in App Engine vs Compute Engine?在 App Engine 和 Compute Engine 中启动 docker 容器有什么区别? 【发布时间】:2018-09-02 06:53:45 【问题描述】:

鉴于您可以将 docker 图像同时上传到应用引擎和计算引擎,对于始终将应用包含在 docker 中的人来说,真正的区别是什么?

根据类似的question,差异归结为 PaaS 与 IaaS,但使用 docker 文件,您始终指定操作系统和运行时环境。因此,我看到的唯一区别是您最终可能会通过提供容器来指定 App Engine。

【问题讨论】:

【参考方案1】:

从根本上说,如果您只想让您的应用在没有太多输入的情况下快速无缝扩展,请使用 App Engine Flex。如果您想使用其他 Google 产品以不同方式配置更多控制权,请考虑使用 Compute Engine 的非托管实例组。

一些历史

值得注意的是,将 Docker 映像添加到 Compute Engine 实例的功能是最近才开发的。在此之前,App Engine Flexible 是城里的新手,因为我们过去只有 App Engine 标准,这绝对不允许您使用 Docker 作为基础。

主要区别

以下是我的经验中的主要区别:

App Engine 被设计为 PaaS 产品,因此您可以在 app.yaml 中自定义缩放参数,App Engine 会读取这些参数并从您那里接管。从技术上讲,您可以使用 Compute Engine 执行此操作,但它涉及更多配置 - 您需要设置实例组、后端和前端。借助 App Engine,所有这些事情都会为您处理好 您不能在 App Engine 上设置任何负载平衡器或任何外围服务或产品。 App Engine Flexible 在为用户提供更多控制权和更多(抱歉)灵活性方面走得更远。但是,它不允许与其他服务无限制地集成。而使用 Compute Engine,您可以设置 HTTPS 负载平衡器、将您的机器添加到不同的网络和子网、设置自定义标签等...

另外,关于 App Engine 和 Compute Engine 之间差异的更详细说明可以在 here 找到。

【讨论】:

【参考方案2】:

App Engine 是 Google 的 PaaS 服务和托管服务。它具有动态实例和常驻实例的选项以实现扩展。它为支持的语言预定义了运行时设置,我们只需要执行代码。它支持同时执行多个版本的应用程序,因此我们可以为不同的用户组发布代码更改。它天生就支持容器环境,因此不需要提供 pod 或节点数量等基本细节。即使对于 App Engine 标准,如果没有负载比节点数减少到零意味着没有成本。 App Engine Flexible 需要至少一个 up 实例。这里的部署可以通过单个命令完成,即gcloud app deploy app.yaml

计算引擎是 IaaS,因此开发人员需要创建一台机器,设置所需的软件,设置 docker 容器环境。不会有扩展、版本管理、流量控制、安全、防火墙、健康监控和修复等。因此,使用计算引擎很难实现 App Engine 提供的功能。另一种选择是 Kubernetes Engine。

【讨论】:

以上是关于在 App Engine 和 Compute Engine 中启动 docker 容器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud 中的 Google Compute Engine、App Engine 和 Container Engine 有啥区别?

App Engine 和 Compute Engine 实例之间是不是存在等效的 AWS“安全组”?

将App Engine URL分派给Compute Engine实例

Google App Engine 通过内部网络与 Compute Engine 通信

Google App EngineGoogle Kubernetes EngineGoogle Compute Engine的区别

Google Compute Engine 上的 FreeBSD