详解Docker架构原理、功能及使用( 二 )

  • 资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等
  • 任务控制:cgroup可以对任务执行挂起、恢复等操作
  •  
    9、了解docker三个重要概念
    1)image镜像
    docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下周一个已经做好的镜像来直接使用
    2)container容器
    docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以吧容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序
    3)repostory仓库
    仓库是集中存储镜像文件的沧桑,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)
    仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下周,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务
     
    10、docker的主要用途
    官方就是Bulid 、ship、run any app/any where,编译、装载、运行、任何app/在任意地放都能运行 。
    就是实现了应用的封装、部署、运行的生命周期管理只要在glibc的环境下,都可以运行 。
    运维生成环境中:docker化 。
    • 发布服务不用担心服务器的运行环境,所有的服务器都是自动分配docker,自动部署,自动安装,自动运行
    • 再不用担心其他服务引擎的磁盘问题,cpu问题,系统问题了
    • 资源利用更出色
    • 自动迁移,可以制作镜像,迁移使用自定义的镜像即可迁移,不会出现什么问题
    • 管理更加方便了
     
    11、docker改变了什么
    • 面向产品:产品交付
    • 面向开发:简化环境配置
    • 面向测试:多版本测试
    • 面向运维:环境一致性
    • 面向架构:自动化扩容(微服务)
    二、docker架构1、总体架构
    详解Docker架构原理、功能及使用

    文章插图
     
    • distribution 负责与docker registry交互,上传洗澡镜像以及v2 registry 有关的源数据
    • registry负责docker registry有关的身份认证、镜像查找、镜像验证以及管理registry mirror等交互操作
    • image 负责与镜像源数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导入、导出操作
    • reference负责存储本地所有镜像的repository和tag名,并维护与镜像id之间的映射关系
    • layer模块负责与镜像层和容器层源数据有关的增删改查,并负责将镜像层的增删改查映射到实际存储镜像层文件的graphdriver模块
    • graghdriver是所有与容器镜像相关操作的执行者
     
    2、docker架构2
    如果觉得上面架构图比较乱可以看这个架构:
     
    详解Docker架构原理、功能及使用

    文章插图
     
     
    从上图不难看出,用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者 。
    而Docker Daemon作为Docker架构中的主体部分,首先提供Server的功能使其可以接受Docker Client的请求;而后Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在 。
    Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动graphdriver将下载镜像以Graph的形式存储;当需要为Docker创建网络环境时,通过网络管理驱动networkdriver创建并配置Docker容器网络环境;当需要限制Docker容器运行资源或执行用户指令等操作时,则通过execdriver来完成 。
    而libcontainer是一项独立的容器管理包,networkdriver以及execdriver都是通过libcontainer来实现具体对容器进行的操作 。当执行完运行容器的命令后,一个实际的Docker容器就处于运行状态,该容器拥有独立的文件系统,独立并且安全的运行环境等 。
    3、docker架构3
    再来看看另外一个架构,这个个架构就简单清晰指明了server/client交互,容器和镜像、数据之间的一些联系 。
    详解Docker架构原理、功能及使用

    文章插图
     
    这个架构图更加清晰了架构
    docker daemon就是docker的守护进程即server端,可以是远程的,也可以是本地的,这个不是C/S架构吗,客户端Docker client 是通过rest api进行通信 。


    推荐阅读