docker的历史与现状,原理与概念

原创
2016/12/17 02:29
阅读数 2.8K

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: 

4.docker学习基础技能

linux基本操作和基本知识,磁盘,文件 ,日志,用户,权限,安全,网络,等。

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部