在软件开发的旧时代,将应用程序从代码导入生产是缓慢而痛苦的。开发人员在依赖地狱中苦苦挣扎,因为测试和生产环境以微妙的方式不同,导致代码神秘地在一个环境中工作,而不是在另一个环境中工作。然后是 2013 年的 Docker,最初是在 dotCloud 中创建的,作为容器技术的实验,以简化部署。Docker 在 3 月份开源,在接下来的 15 个月里,它成为领先的容器平台。
从物理机到 Docker容器的发展经历
在计算的早期,应用程序直接在物理服务器(“裸机”)上运行。团队购买、上架、堆叠、打开电源和配置每台新机器。这非常耗时。在计算的早期,应用程序直接在物理服务器("裸机")上运行。团队购买、上架、堆叠、打开电源和配置每台新机器。这非常耗时。
然后是硬件虚拟化。它允许多个虚拟机在单个功能强大的物理服务器上运行。这样可以更有效地利用资源。但是,配置和管理虚拟机仍然需要繁重的工作。然后是硬件虚拟化。它允许多个虚拟机在单个功能强大的物理服务器上运行。这样可以更有效地利用资源。但是,配置和管理虚拟机仍然需要繁重的工作。
接下来是像 Amazon EC2 这样的基础设施即服务 (IaaS)。IaaS 消除了设置物理硬件的需要,并提供了按需虚拟资源。但开发人员仍然必须手动配置具有库、依赖项等的 VM。接下来是像 Amazon EC2 这样的基础设施即服务 (IaaS)。IaaS 消除了设置物理硬件的需要,并提供了按需虚拟资源。但开发人员仍然必须手动配置具有库、依赖项等的 VM。
Cloud Foundry 和 Heroku 等平台即服务 (PaaS) 是下一个重大转变。PaaS 提供了一个托管开发平台来简化部署。但是,不同环境之间的不一致导致了“在我的机器上工作”问题。Cloud Foundry 和 Heroku 等平台即服务 (PaaS) 是下一个重大转变。PaaS 提供了一个托管开发平台来简化部署。但是,不同环境之间的不一致导致了"在我的机器上工作"问题。
这让我们在 2013 年找到了 Docker。Docker 通过两项关键创新改进了 PaaS。这让我们在 2013 年找到了 Docker。Docker 通过两项关键创新改进了 PaaS。
轻量级容器化
容器技术通常与虚拟机相提并论,但它们使用的方法截然不同。容器技术通常与虚拟机相提并论,但它们使用的方法截然不同。
虚拟机管理程序模拟底层服务器硬件(如 CPU、内存和磁盘),以允许多个虚拟机共享相同的物理资源。它在此虚拟化硬件上安装来宾操作系统。在来宾 OS 上运行的进程无法看到主机硬件资源或其他 VM。虚拟机管理程序模拟底层服务器硬件(如 CPU、内存和磁盘),以允许多个虚拟机共享相同的物理资源。它在此虚拟化硬件上安装来宾操作系统。在来宾 OS 上运行的进程无法看到主机硬件资源或其他 VM。
相比之下,Docker 容器共享主机操作系统内核。Docker 引擎不会虚拟化操作系统资源。相反,容器通过 Linux 命名空间和控制组 (cgroups) 实现隔离。相比之下,Docker 容器共享主机操作系统内核。Docker 引擎不会虚拟化操作系统资源。相反,容器通过 Linux 命名空间和控制组 (cgroups) 实现隔离。
命名空间提供进程、网络、装载和其他资源的分离。cgroups 限制和计量容器的 CPU、内存和磁盘 I/O 等资源的使用。我们稍后将对此进行更深入的访问。命名空间提供进程、网络、装载和其他资源的分离。cgroups 限制和计量容器的 CPU、内存和磁盘 I/O 等资源的使用。我们稍后将对此进行更深入的访问。
这使得容器比 VM 更轻量级、更便携。 多个容器可以共享一个主机及其资源。它们的启动速度也快得多,因为没有启动完整的 VM 操作系统。这使得容器比 VM 更轻量级、更便携。多个容器可以共享一个主机及其资源。它们的启动速度也快得多,因为没有启动完整的 VM 操作系统。
Docker并不像一些人所描述的那样是“轻量级虚拟化”。它使用 Linux 原语来隔离进程,而不是像虚拟机管理程序那样虚拟化硬件。这种操作系统级隔离使轻量级 Docker 容器成为可能。Docker并不像一些人所描述的那样是“轻量级虚拟化”。它使用 Linux 原语来隔离进程,而不是像虚拟机管理程序那样虚拟化硬件。这种操作系统级隔离使轻量级 Docker 容器成为可能。
应用程序打包应用程序打包
在 2013 年 Docker 发布之前,Cloud Foundry 是一个广泛使用的开源 PaaS 平台。许多公司采用 Cloud Foundry 来构建自己的 PaaS 产品。在 2013 年 Docker 发布之前,Cloud Foundry 是一个广泛使用的开源 PaaS 平台。许多公司采用 Cloud Foundry 来构建自己的 PaaS 产品。
与 IaaS 相比,PaaS 通过处理部署和应用程序运行时来改善开发人员体验。Cloud Foundry 提供了以下关键优势:与 IaaS 相比,PaaS 通过处理部署和应用程序运行时来改善开发人员体验。Cloud Foundry 提供了以下关键优势:
- 避免供应商锁定 - 基于它构建的应用程序可以在 PaaS 实现中移植。避免供应商锁定 - 基于它构建的应用程序可以在 PaaS 实现中移植。
- 支持多样化的基础架构环境和扩展需求。支持多样化的基础架构环境和扩展需求。
- 全面支持 Java、Ruby 和 Javascript 等主要语言,以及 MySQL 和 PostgreSQL 等数据库。全面支持 Java、Ruby 和 Javascript 等主要语言,以及 MySQL 和 PostgreSQL 等数据库。
- 一组用于部署应用程序的打包和分发工具一组用于部署应用程序的打包和分发工具
Cloud Foundry 依靠 Linux 容器来提供隔离的应用程序沙箱环境。然而,这个支持Cloud Foundry的核心容器技术并没有作为面向用户的功能公开,也没有作为关键的架构组件被强调。Cloud Foundry 依靠 Linux 容器来提供隔离的应用程序沙箱环境。然而,这个支持Cloud Foundry的核心容器技术并没有作为面向用户的功能公开,也没有作为关键的架构组件被强调。
提供Cloud Foundry PaaS解决方案的公司忽略了将容器作为开发人员工具解锁的潜力。他们没有认识到容器如何从内部隔离机制转变为外部化的包装形式。提供Cloud Foundry PaaS解决方案的公司忽略了将容器作为开发人员工具解锁的潜力。他们没有认识到容器如何从内部隔离机制转变为外部化的包装形式。
Docker 通过解决容器镜像的两个关键 PaaS 打包问题而变得流行起来:Docker 通过解决容器镜像的两个关键 PaaS 打包问题而变得流行起来:
- 将应用、配置、依赖项和操作系统捆绑到单个可部署映像中将应用、配置、依赖项和操作系统捆绑到单个可部署映像中
- 使本地开发环境与云运行时环境保持一致使本地开发环境与云运行时环境保持一致
下图显示了比较。下图显示了比较。
这巧妙地解决了困扰 PaaS 的依赖性和兼容性问题。但是 Cloud Foundry 没有足够快地适应对 Docker 镜像的支持。这使得 Docker 映像在云计算环境中激增。这巧妙地解决了困扰 PaaS 的依赖性和兼容性问题。但是 Cloud Foundry 没有足够快地适应对 Docker 镜像的支持。这使得 Docker 映像在云计算环境中激增。
从 Docker 到 Kubernetes
Docker 之所以能够早期流行,是因为它在应用程序打包和部署方面进行了创新。它最初的成功很大程度上归功于这种在轻量级容器中隔离应用程序的新方法。
随着 Docker 的普及,该公司试图将其产品扩展到容器化之外。它冒险扩展到一个完整的 PaaS 平台。这导致了用于集群管理的 Docker Swarm 的开发,并收购了 Fig(后来的 Docker Compose)以增强编排功能。
Docker的抱负引起了一些科技巨头的注意。Google、RedHat 和其他 PaaS 公司等公司都希望参与这项热门新技术。
让我们看看 2013 年至 2018 年间发生了什么,下图如下图所示:
下一篇,我们将介绍:快速部署应用Docker容器
本文暂时没有评论,来添加一个吧(●'◡'●)