设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

企业容器化如何选型?全方位对比 Heroku 与 Docker

发布时间:2019-11-13 16:24 所属栏目:47 来源:冬雨编译
导读:【线上直播】11月21日晚8点贝壳技术总监侯圣文《数据安全之数据库安全黄金法则》 Heroku 和 Docker 都可以让开发人员能够在容器内开发、部署和运行应用程序。容器是在单个操作系统内核上运行的虚拟环境,使应用程序能够使用虚拟机或裸机计算机系统所需资源
【线上直播】11月21日晚8点贝壳技术总监侯圣文《数据安全之数据库安全黄金法则》

Heroku 和 Docker 都可以让开发人员能够在容器内开发、部署和运行应用程序。容器是在单个操作系统内核上运行的虚拟环境,使应用程序能够使用虚拟机或裸机计算机系统所需资源的一小部分来运行。容器还使我们能够快速扩展应用程序,并轻松地从开发过渡到生产。虽然 Heroku 和 Docker 都为软件部署和管理提供了一个容器化的解决方案,但是它们在实现和术语方面有很大的不同。每个系统也有着不同的利与弊。

什么是容器?  

容器是使应用程序能够共享单个操作系统的软件系统。容器系统通常由容器引擎、主机操作系统和处理器组成。

容器引擎——在这种情况下,Docker 或 Heroku 是一种用于部署容器化应用程序的托管环境。容器引擎管理内核和内存。它还管理各个应用程序的空间隔离和安全性,并允许可伸缩性。

主机操作系统 (OS)——主机操作系统 (通常是 Linux) 提供用户界面,内存等资源的管理,并为应用程序提供服务。

处理器——也称为中央处理器,它基于来自操作系统和应用程序的指令,负责执行所有的任务。

容器的优点  

因为容器允许应用程序共享资源,所以它们提供了以下几个优点:

降低成本——容器通过允许应用程序共享资源来降低成本。

增加的可靠性和健壮性——容器使我们可以做到快速的故障切换和恢复。

可伸缩性——容器使我们可以快速且容易地伸缩应用程序的数量。

隔离——容器在名称空间中使用自己的资源隔离每个应用程序。因此,尽管应用程序共享资源,但它们在职能上是相互隔离的。这还意味着一个应用程序中的故障是与其他应用程序隔离的,从而使容器比虚拟机或裸金属系统更安全。

持续集成——因为容器很容易被摧毁和部署,所以它们支持迭代过程,比如敏捷。

可移植性——容器非常便携,允许从开发到生产的轻松转换,在云环境中效果尤为显著。

安全——容器的模块化设计增加了隔离性,使系统更难被攻击,并限制了恶意软件的影响。

  • 容器进程必须只向容器特定的文件系统写入信息。
  • 容器命名空间必须与私有内部网隔离。
  • 容器特权必须隔离。
Heroku

企业容器化如何选型?全方位对比 Heroku 与 Docker

Heroku 是一个平台即服务 (PaaS) 平台,是 2007 年创建的第一批云平台之一。Heroku 最初只支持 Ruby,但现在已支持 Java、Node.js、Python、 PHP 等。Heroku 由以下组件组成:

  • BuildPack—Heroku BuildPack 是一组用于创建镜像的脚本。BuildPack 确定应用程序可以运行的语言,包括 Java、Python、Ruby 和其他语言。Heroku 为各种语言提供了默认的 BuildPack ,开发人员也可以构建自己的 BuildPack。
  • Slug——运行 BuildPack 时,它会创建应用程序的打包副本,称为 Slug。Slugs 包含运行应用程序所需的所有功能,可以快速轻松地部署。
  • 根据 Heroku 的说法,“Dynos 是隔离的、虚拟化的 Linux 容器,用于根据用户指定的命令执行代码”。使用 Dynos,可以根据资源需求将应用程序扩展到任何级别。
  • 可为 Heroku 购买 Add-Ons-Preconfigured 构建块,以构建更复杂的应用程序。
  • 命令行界面 (CLI)——用来管理 Heroku 容器的命令行界面。

有没有考虑过将 DeployPlace 作为 Heroku 的替代方案以避免被供应商锁定?

Docker  

企业容器化如何选型?全方位对比 Heroku 与 Docker

Docker 是一个开源工具,用于在容器中创建、管理、部署和运行应用程序。与 Heroku 必须在自己的云环境中运行不同,Docker 可以安装在笔记本电脑、服务器或如 Amazon Web Services (AWS) 之类基于云的环境中。Docker 由以下高级组件组成:

  • Dockerfile——Dockerfile 是一组用于构建 Docker 镜像的命令 (参见下文)。Dockerfiles 也代表着 Docker 镜像的最终配置。
  • Docker 镜像——通过运行 Dockerfile 创建的 Docker 镜像 (参见上文)。Docker 镜像是一个多层文件,包含运行应用程序所需的所有资源、依赖项、数据、文件和设置。每次启动一个 Docker 镜像时,它都会创建一个同一个应用程序的容器,从而提供了简单的可伸缩性。
  • Index——Docker 图像可以上传到 Index 分享给 Docker 社区。这样可以让其他用户基于从 Index 下载的单个 Docker 镜像组件构建复杂的应用程序。

命令行界面(CLI)——与 Heroku 类似,Docker 提供了用于管理容器的 CLI。

Docker 和 Heroku 术语  

企业容器化如何选型?全方位对比 Heroku 与 Docker

Docker vs Heroku  

虽然 Docker 和 Heroku 有一个共同的概念,即应用程序的容器化,但是这两个平台之间有着一些主要的区别。Heroku 提供了运行应用程序的容器和托管应用程序的基础设施。换句话说,Heroku 提供了容器化的所有优点,但是你也必须在 Heroku 平台上运行它。这使得 Heroku 非常容易搭建和运行,但是同时也有一些限制。与 Docker 不同,Heroku 不能在本地服务器或基于私有云的服务上运行。

Heroku  

Heroku 的优点:

Heroku 易于搭建、实施和部署。Heroku 管理硬件、软件和其他资源,使开发人员可以几乎只专注于开发他们的应用程序。

Heroku 支持多种语言,包括Ruby、Java、Node.js、Scala、Clojure、Python、PHP和Go。

Heroku 是一个通晓多种语言的平台——通过使用各种构建包,开发人员可以在几乎任何编程语言中部署应用程序。

Heroku Dynos 允许简单的开发和可用性——因为由 Heroku 管理和运行应用程序,将开发人员从操作系统和其他系统配置的管理中解放出来。

Heroku 允许即时的可伸缩性——通过增加或减少 Dynos 的数量,可以很容易地按比例增加或减少 Heroku。

Heroku 的缺点:

在 Heroku 上运行的应用程序只能在 Heroku 平台上运行。因此,Heroku 不能在内部服务器或私有云上运行。了解一下 DeployPlace,以避免被供应商锁定。

Heroku 应用程序只能使用 Linux 操作系统运行。

虽然 Heroku 提供了一个免费的版本,但标准套餐每月 25 美元起。

Heroku 的流言:

Heroku 太贵了。许多公司更喜欢寻找、招聘和培训 DevOps 工程师来搭建和支持部署基础设施。招聘、培训、工资和办公的成本常常被忽视。在主要关注开发更好的产品的同时,DevOps 团队的招募和管理可能会被忽视。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读