Hits

容器技术发展

容器技术发展

  • 为什么容器里只能跑“一个进程”?
  • 为什么我原先一直在用的某个JVM参数,在容器里就不好使了?
  • 为什么Kubernets就不能固定IP地址?容器网络连接不通又该如何去Debug?
  • Kubernets中StatefulSet和Operator到底有什么区别?PV和PVC这些概念又该怎么用?

PaaS项目与Docker对比

Paas项目它就是提供了一种名叫“应用托管”的能力,最核心机制就是一套应用的打包和分发机制。Cloud Foundry就是一个开源的Paas项目,运维人员只需要在创建好的虚拟机上部署一个Cloud Foundry项目,然后开发者只要执行一条命令就能把本地的应用部署到云上,$ cf push "我的应用"。这就是一种打包方式,用户把应用的可执行文件和启动脚本打包进一个压缩包内,上传到云上Cloud Foundry的存储中,接着,Cloud Foundry会通过调度器选择一个可以运行这个应用的虚拟机,然后通知这个机器的Agent把应用压缩包下载下来启动。这里有个关键问题就是,一个虚拟机启动很多个来自不同用户的应用,Cloud Foundry会调用操作系统的Cgroups和Namespace机制为每一个应用单独创建一个称作“沙盒”的隔离环境,然后在“沙盒”中启动这些应用进程,这样,就实现了把多个用户的应用互不干涉地在虚拟机里批量地、自动地运行起来的目的。这就是PaaS项目最核心的能力,而这些Cloud Foundry用来运行应用的隔离环境,或者说“沙盒”就是所谓的容器。

docker项目与Cloud Foundry的容器大部分功能和实现原理都是一样的,docker的创新点就是Docker镜像。

docker镜像就是一个压缩包,这个压缩包里的内容,比Paas的应用可执行文件 + 启动脚本的组合就要多很多了,大多数docker镜像是直接由一个完整的操作系统的所有文件和目录构成的,所以这个压缩包里的内容跟你本地开发和测试环境用的操作系统是一样的。当把这个压缩包在远端解压运行后跟本地的环境是一致的,不用修改配置文件,就可以让本地环境和云端环境高度一致。这就是Docker镜像的精髓。

Docker项目给PaaS世界带来了“降维打击”,其实是提供了一种非常便利的打包机制,这种机制直接打包了应用运行所需要的整个操作系统,从而保证了本地环境和云端环境的高度一致,避免了用户通过“试错”来匹配两种不同运行环境之间差异的痛苦过程。

Docker项目之所以能取得如此高的关注,一方面正如前面所说的那样,它解决了应用打包和发布这一困扰运维人员多年的难题;而另一方面,就是因为第一次把一个纯后端技术概念,通过非常友好的设计和封装,交到了最广大的开发者群体手里。

docker的优势

  • docker镜像通过技术手段解决了PaaS的根本性问题。
  • docker容器同开发者之间有着与生俱来的密切关系。
  • PaaS概念已经深入人心的完美契机。

CNCF (Cloud Native Computing Foundation)

RetHat和Google牵头成立了基金会CNCF,以Kubernets项目为基础,建立一个由开源基础设施领域厂商主导的、按照独立基金会方式运营的平台级社区。

容器编排格局(三足鼎立):Kubernets项目,docker Swarm项目, Mesos社区。

  • Kubernetes 项目必须能够在容器编排领域取得足够大的竞争优势;
  • CNCF 社区必须以 Kubernetes项目为核心,覆盖足够多的场景。

Kubernets项目,具有与众不同的容器编排与管理的生态;在整个社区推进“民主化”架构。很快整个容器社区中催生出了大量的、基于Kubernets API和扩展接口的二次创新工作:

  • 目前热度极高的微服务治理项目 Istio
  • 被广泛采用的有状态应用部署架构 Operator
  • 还有像Rook这样的开源创业项目,它通过Kubernets的可扩展接口,把Ceph这样的重量级产品封装成了简单易用的容器存储插件。

本文链接:参与评论 »

--EOF--

专题「docker相关知识学习」的其它文章 »

Comments