读懂这几个关键词,你就能了解 Docker 啦

基于高度虚拟化所诞生的容器技术,现在已经走向大规模应用。那么容器、虚拟机、Docker、Openstack、Kubernetes 之间又有什么关系,对如今的选择有什么影响呢?html

上世纪 60 年代,计算机是一种稀有商品。即使只租不买,每个月也要花一千多美圆,这使许多企业都没法承受。并且早期的计算机一般专用于某一项特定的任务,须要同时在许多用户之间共享计算机资源,而且可能花费几天甚至几周的时间才能运行完毕。俗话说:“需求是发明之母”,有了需求人们就会去发明创造来知足需求。计算机的历史也不例外,过于昂贵的费用和长时间的共享需求刺激了虚拟化的逐渐发展。服务器

Docker 与容器

基于需求刺激,容器技术应运而生。容器的发展从 Chroot,FreeBSD jails,OpenVZ,LXC,到现在的 Docker、Rocket 真正走向了大规模应用。微信

相比普通服务器,容器是一种更轻量级,更灵活的虚拟化处理方式,它将一个应用程序所需的一切打包在一块儿。通常状况下开发人员在编写代码时,他们是在本身本地的开发环境中工做;当他们准备将代码移至生产环境时,总会发生一些意想不到的事情。缘由多种多样:不一样的操做系统,不一样的依赖项,不一样的库。网络

而容器解决了可移植性这一关键问题,它能够将代码与运行它的环境分开。开发人员能够将应用程序(包括正确运行所需的全部库)打包到一个小的容器镜像中。该镜像能够在其余任何计算机上运行。架构

Docker 的兴起

虽然 Docker 常常会和“容器(Container)”一词相提并论,可是 Docker 自己并非容器。从字面意思能够解读,“Container”原译为“集装箱”,而“Docker”被译为“码头工人”。框架

Docker 是一个开源的应用容器引擎,是建立容器的工具。让开发者能够打包他们的应用和依赖包到一个可移植的容器中,而后发布到任何流行的 Linux 机器或 Windows 机器上。less

2013 年 PyCon 大会以后,Docker 迅速成为社区、客户和更普遍行业的实际标准与基石。Docker 的强大之处在于它经过可移植的形式和易于使用的工具,在应用程序和基础设施之间创造了独立性,使得容器技术大众化,并使容器技术成为主流。运维

Docker 如此大火,可是咱们须要知道,Docker 并非惟一的,也不是第一个出现的容器平台。其余的框架,例如 OpenVZ 和 LXC(Linux Container),于 2000 年中期就已经开始使用。而 FreeBSD jails,则能够追溯到更远的年代。Docker 是在 2013 年发布的,与当今大多数主流的容器技术相比,它是很是年轻的。分布式

虽然 Docker 不是最成熟的,却引发了极大的关注。这是由于 Docker 是一个扩展的 Linux 容器(LXC),是一种独特轻巧、以应用为中心的虚拟化工具。它大大下降了企业开销,也更容易让企业在服务器上部署软件。且 Docker 容许系统管理员和开发人员在容器中构建任何应用程序,节省资源。模块化

除此以外,Docker 发展迅猛的缘由还有:

  • Docker 从一开始就是开源的,这使得 Docker 在行业内有了强大的吸引力。直到 2013 年,行业才开始将“开源”视为软件生产的默认模式。
  • Docker 出如今了正确的时间。到 2013 年,虚拟机彷佛已经成为了过期的技术。你们一直在寻找一种更精简,更方便的方式来部署应用程序,而这时 Docker 出现了,它刚好符合要求。
  • Docker 使用的另外一个主要重点是 DevOps。DevOps 在 2010 年初开始流行,它强调了软件交付的敏捷性、灵活性和可扩展性。Docker 刚好为根据 DevOps 部署应用程序提供了合适的环境。

Docker 与 OpenStack

容器和虚拟机这两种技术常常被互相比较。所谓虚拟机(Virtual Machine)是指经过软件模拟的具备完整硬件系统功能的、运行在一个彻底隔离环境中的完整计算机系统。

Docker 可能被认为是当前容器技术的表明,而做为虚拟机技术的表明,OpenStack 也被大众所周知。

OpenStack 是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。它不是一个软件,而是一个云平台管理的项目。这个项目由几个主要的组件组合起来完成一些具体的工做。其中主要包括:

  • Nova(Compute):在 OpenStack 环境中计算实例(即建立的云主机)的生命周期管理。按需响应包括生成、调度、回收虚拟机等操做。
  • Neutron(Networking):确保为其它 OpenStack 服务提供网络链接即服务。
  • Swift(Object Storage):经过基于 HTTP 的应用程序接口存储和任意检索的非结构化数据对象。
  • Glance(Image service):存储和检索虚拟机磁盘镜像,OpenStack Compute 会在实例部署时使用此服务。

许多人都会经常使用 Docker 和传统虚拟机来作比较,而且常常凸显出 Docker 的优点。其实这和 OpenStack 没有直接关系。曾经许多的性能测试都会将 Docker 与 KVM 进行对比,可是后来发现这些测试是经过 OpenStack 运行的,这代表两种技术其实能够很好地协同工做。

那么若是使用了 Docker,还能使用 OpenStack 吗?

答案是能够的,Docker 以最简单的形式提供了一个容器,用于管理共享基础架构上的应用程序,同时又使它们彼此隔离。而虚拟机则经过建立一个完整的操做系统来完成相似的工做。OpenStack 的官方文档(https://wiki.openstack.org/wi...)特别提供了部署 Docker 的解决方案,而且单独指出:“容器并不是旨在替代虚拟机,它们是互补的,由于它们更适合特定的用例。”

Docker 与 Kubernetes

若是第一次看到 Kubernetes 这个词,可能会比较好奇它为什么简写为 K8S。实际上是 k 与 s 中间正好隔了 8 个字母,K8S 为一种偷懒地写法。Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

做为容器编排的解决方案,随着 Kubernetes 愈来愈流行,“Kubernetes” 与 “Docker” 这两个词也常常会相提并论。

目前,Kubernetes 能够说是市场领导者,及编排容器和部署分布式应用程序的标准化方法。Kubernetes 能够在公共云服务或本地运行,具备高度模块化,开放源代码,而且拥有一个活跃的社区。许多云厂商也都已经提供了 Kubernetes 做为服务。

固然了,Docker 和 Kubernetes 并非竞争对手。Docker 是一个容器化平台,而 Kubernetes 是 Docker 等容器平台的协调器。它旨在为容器提供高效地管理,监视应用程序的运行情况,使应用程序提供不间断地服务,而不须要运维人员去进行复杂的手工配置和处理。

云计算技术发展至今,从最开始的硬件虚拟化、IaaS、OpenStack、PaaS、容器到现在的 Serverless,云计算已经愈来愈接近应用逻辑。容器实现了应用的分装,方便了应用在不一样环境间的迁移,轻量级的特性又使它可以消耗更少的资源而带来更大的便利。固然,技术更新迭代迅速,咱们只有不断学习才能跟上行业的步伐,加油吧,小伙伴们!

往期技术文章都在微信同步分享,能够添加微信:upyun0001.png

推荐阅读

无需额外工具,又小拍的简单抓包教程

检查网上下载“学习资料”的完整性,用这招就够了

相关文章
相关标签/搜索