Docker--技术原理

来源:互联网 发布:美容连锁软件 编辑:程序博客网 时间:2024/06/05 17:41
1.docker:第三代Paas平台

2.技术原理介绍

       Docker就是虚拟化的一种轻量级替代技术。Docker的容器技术不依赖任何语言,框架,或者系统,可以将App变成一种标准化的,可移植的,自管理的组件,并脱离服务器硬件在任何主流系统中开发,调试和运行。
       简单一句话:在Linux系统上迅速创建一个容器并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装,部署和升级,非常方便。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互补影响。
       LXC的基础上, Docker额外提供的Feature包括:标准统一的打包部署运行方案。
       为了最大化重用Image,加快运行速度,减少内存和磁盘footprint, Docker container运行时所构造的运行环境,实际上是由具有依赖关系的多个Layer组成的。例如一个apache的运行环境可能是在基础的rootfs image的基础上,叠加了包含例如Emacs等各种工具的image,再叠加包含apache及其相关依赖library的image,这些image由AUFS文件系统加载合并到统一路径中,以只读的方式存在,最后再叠加加载一层可写的空白的Layer用作记录对当前运行环境所作的修改。
       有了层级化的Image做基础,理想中,不同的APP就可以既可能的共用底层文件系统,相关依赖工具等,同一个APP的不同实例也可以实现共用绝大多数数据,进而以copy on write的形式维护自己的那一份修改过的数据等。


3.核心技术之cgroups:限制某个或者某些进行的分配资源。

4.核心技术之LXC技术:
一种基于容器的操作系统层级的虚拟化技术。借助于namespace的隔离机制和cgroups限额功能,LXC提供了一套统一的API和工具来建立和管理container。

5.核心技术之AUFS:
       AuFS是一个能透明覆盖一或多个现有文件系统的层状文件系统。 支持将不同目录挂载到同一个虚拟文件系统下,可以把不同的目录联合在一起,组成一个单一的目录。这种是一种虚拟的文件系统,文件系统不用格式化,直接挂载即可。
       Docker一直在用AuFS作为容器的文件系统。当一个进程需要修改一个文件时, AuFS创建该文件的一个副本。AuFS可以把多层合并成文件系统的单层表示。这个过程称为写入复制(copy on write ) 。AuFS允许Docker把某些镜像作为容器的基础。例如,你可能有一个可以作为很多不同容器的基础的CentOS系统镜像。多亏AuFS,只要一个CentOS镜像的副本就够了,这样既节省了存储和内存,也保证更快速的容
器部署。
       使用AuFS的另一个好处是Docker的版本容器镜像能力。每个新版本都是一个与之前版本的简单差异改动,有效地保持镜像文件最小化。但,这也意味着你总是要有一个记录该容器从一个版本到另一个版本改动的审计跟踪。

6.Docker全生命周期开发模式

7. Docker的基本概念
Docker Image
• Docker Image是一个极度精简版的Linux程序运行环境,比如vi这种基本的工具没有, 官网的Java镜像包括的东西更少,除非是镜像叠加方式的,如Centos+Java7
• Docker Image是需要定制化Build的一个“安装包”,包括基础镜像+应用的二进制部署包
• Docker Image内不建议有运行期需要修改的配置文件
• Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等。当前目录下包含Dockerfile,使用命令build来创建新的image
• Docker Image的最佳实践之一是尽量重用和使用网上公开的基础镜像

8. Docker Container
• Docker Container是Image的实例,共享内核
• Docker Container里可以运行不同Os的Image,比如Ubuntu的或者Centos
• Docker Container不建议内部开启一个SSHD服务, 1.3版本后新增了docker exec命令进入容器排查问题。
• Docker Container没有IP地址,通常不会有服务端口暴露,是一个封闭的“盒子/沙箱

9. Docker Container的生命周期

10. Docker Daemon
• Docker Daemon是创建和运行Container的Linux守护进程,也是Docker最主要的核心组件
• Docker Daemon 可以理解为Docker Container的Container
• Docker Daemon可以绑定本地端口并提供Rest API服务,用来远程访问和控制

11. Docker Registry/Hub
       Docker之所以这么吸引人,除了它的新颖的技术外,围绕官方Registry(DockerHub)的生态圈也是相当吸引人眼球的地方。在Docker Hub上你可以很轻松下载到大量已经容器化好的应用镜像,即拉即用。这些镜像中,有些是Docker官方维护的,更多的是众多开发者自发上传分享的。而且 你还可以在Docker Hub中绑定你的代码托管系统(目前支持Github和Bitbucket)配置自动生成镜像功能,这样Docker Hub会在你代码更新时自动生成对应的Docker镜像。

12. Docker 核心组件的关系




原创粉丝点击