docker的历史与现状及原理与概念是什么
这篇文章将为大家详细讲解有关docker的历史与现状及原理与概念是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1.docker的历史与现状分析
老一代PASS平台的局限性和困境:
主要提供应用部署和托管,针对应用开发者,仅支持特定的LAAS基础技术,支持单种开发语言和框架,支持特定服务,如自定义的数据存储APIs,没有很好的解决常用中间件的部署问题,难以解决应用和资源的隔离问题。
新一代PAAS平台:
全方位应用生命周期管理,关注开放性,应用的可移植性和云间相互操作性,代表包括Cloud Foundry, OpenShift, Docker, Heroku, MoPass等技术或服务,具备以下大多数特征(多语言和框架,多服务,多云和多laaS技术)
docker被称为第三代Paas平台。
docker于2013.3.27正式发布,github上贡献增长迅猛,2013.10dotCloud公司改名docker。
2.docker的技术原理介绍
docker是虚拟化的一种轻量级替代技术。docker容器不依赖于任何语言、框架或系统 ,可以将APP变成一种标准化的可移植的自管理的组件,并脱离服务器硬件在任何主流系统中开发调试和运行。
在linux系统上迅速创建一个容器并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装 、部署和升级,非常方便。可以很方便的把生产和开发环境分开。
docker核心技术:cgroups
cgroups就是 controller group, linux系统中经常有个需求希望能限制某个或某些进程的分配资源。于是出是cgroups概念,在这个group中, 有分配好的特定比例的cpu时间,IO时间, 可用内存大小等。cgroups是将任意进程进行分组 化管理的linux内核功能。由google工程师提出,后来整合进linux内核。
docker核心技术:LXC
LXC是linux container的简称,是一种基于容器的操作系统层级的虚拟化技术。借助于namespace的隔离机制和cgroups的限额功能,lxc提供了一套统一的API和工具来建立和管理container。LXC跟其他 操作系统 层次的虚拟技术相比,最大的优势是LXC被整合进内核,不用单独为内核打补丁。
LXC旨在提供一个共享kernel的OS级虚拟化方法,在执行时不用重复加载kernel,且container的kernel与host共享,因此大加快container的启动过程,并显著减少内存消耗,还通过共享资源 节省资源开销,意味着容器化比真正的虚拟化的开销要小得多。在实际测试中,基于LXC的虚拟化方法的IO和CPU性能几乎接近baremetal的性能。但如果内核停止,所有容器都会停止运行。
docker核心技术:AUFS
AuFS是一个能透明覆盖一个或多个现有文件系统的层状文件系统.支持将不同目录挂载到同一个虚拟文件系统下,可以把不同的目录联合在一起,组成一个单一的目录。这是一种虚拟的文件 系统,文件 系统不用格式化,直接挂载即可.
docker一直在用AuFS作为容器的文件系统。当一个进程需要修改一个文件 时,AuFS创建该文件的一个副本。AuFS可以把多层合并 成文件 系统 的单层表示。这个过程称为写入复制。
AuFS允许docker把某些镜像作为容器的基础。可以节省存储和内存,也保证更快速的容器部署。
使用AuFS的另一个好处是docker的版本容器镜像能力。
docker原理:APP打包
LXC的基础上,docker额外提供的功能包括标准统一的打包部署方案。为最大化重用image, 加快运行速度,减少内存和磁盘footprint, docker container运行时所构造的运行环境,实际 上是由具有依赖关系的多个layer组成的。有了层级化的image做基础,不同APP就可以共用底层文件 系统、相关依赖工具等,同一个APP的不同实例也可以实现共用绝大多数数据,进而以copy on write的形式维护自己修改过的那份数据等。
docker全生命周期开发模式:
docker正在迅速改变云计算领域的运作规则,从持续集成/持续交付到微服务、开源协作,到DevOps, docker已经给应用程序开发生命周期及云工程计算实践带来了巨大变革。
3. docker 的基本概念
docker image :
docker image是一个极度精简版的linux程序运行环境。docker image是需要定制化build的一个"安装 包", 包括基础镜像 + 应用的二进制部署包。docker image内不建议有运行期需要修改的配置文件。
dockerfile用来创建一个自定义的image, 包含了用户指定的软件依赖等。docker iamges的最佳实践之一是尽量重用和使用网上公司的镜像。
docker container:
docker container是image的实例,共享内核。docker container里可以运行不同OS的image,如ubuntu或centos。docker1.3新增docker exec命令进入容器排查问题。docker container没有IP 地址,通常不会有服务端口暴露,是一个封闭的盒子/沙箱。
docker 生命周期:
Docker daemon:
docker daemon是创建和运行container的linux守护进程,也是docker最主要的核心组件。docker daemon可以绑定本地端口并提供rest api服务,用来远程访问和控制。
Docker registry/hub:
关于docker的历史与现状及原理与概念是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。