Docker的简介

1.什么是Docker

  1. Docker 是基于Go语言实现的开源项目,诞生于2013年初,最初的发起者dotClound公司.Docker自然开源后受到广泛关注.
  2. Docker项目目前已经加入Linux的基金会,遵循Apache2.0协议,全部开源代码均在https://gitHub.com/docker/docker 上
  3. Linux的操作系统的支持:Redhat RHEL 6.5/CentOS 6.5往上的操作系统,Ubuntu14.04 操作系统,都默认带有docker的安装包.
  4. 与docker的合作方 Google的PaaS(platform as a Service) 平台及服务产品,微软的云平台Azure 亚马逊的AWS EC2 Container 
  5. Docker 的主要目的: Build,Ship and Run  Any APP Anywhere 即通过对应用组件的封装(Packing) 分发(Dispatcher) 部署(Deployment) 运行(Runtime) 等生命周期的管理 达到一次封装 到处运行. 组件:可以是一个web的应用 也可以是一套数据库 甚至是一个操作系统
  6. Docker 基于Linux的多项开源技术提供了高效 敏捷和轻量级的容器方案,并且支持多种主流平台(Paas) 和本地系统上的部署

2.Linux容器技术

    1.     Docker引擎的基础是Linux容器(Linux Containers,LXC) 技术. IBM Developer Works 给出的解释:容器有效地将单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求,与虚拟化相比,这样既不需要指令模拟,也不需要及时编译.容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制,此外,也避免了准虚拟化技术和系统调用替换中的复杂性
 
 

3.从Linux容器到Docker

  1.     在LXC 的基础上,Docker进一步优化了容器的使用体验.Docker提供了各种容器管理工具(如 分发 版本 移植等) 让用无需关注底层的操作,可以简单明了地使用容器和管理容器.用户使用Docker容器就像操作轻量级的虚拟机那样简单

4.为什么要使用docker

  1.      Docker在正确的地点和时间顺应了正确的趋势-----即高效地构建应用,现在开发者需要能方便的创建运行在云平台的上应用也就是说应用必须脱离底层机器,而且同时必须是"任何时间任何地点" 可以获取的.因此,开发者需要一种创建分布式应用程序的方式,这也是docker可以提供的   举个例子:  

        假设用户试图基于最常见的LAMP(Linux+Apache+Mysql+PHP) 组合运维一个网站,按照传统的做法,首先 需要安装 Apache mysql PHP 的环境 ,之后对其进行参数配置,还需要测试,看是否可以正常工作,不正常还需要排查,需要花费更多的时间

5.Docker在开发和运维中的优势

    1. 更快的交付和部署

            使用docker 开发人员可以使用镜像来快速构建一套标准的开发环境,开发完成之后,测试和运维人员可以直接使用相同的环境来部署代码,Docker   可以快速创建和删除容器,实现快速迭代,整个过程都是可见的使团队更容易理解应用的创建和工作过程

2. 更高效的资源利用 Docker容器的运行不需要额外的虚拟化管理程序(virtual manager Manager VMM) 支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低

3. 更轻松的迁移和管理

    Docker 容器几乎可以在任意的平台上运行,包括物理机,虚拟机,公有云  私有云 个人电脑  服务器  等,这种兼容性让客户可以在不同的平台之间轻松地迁移应用

4. 更简单的管理

    使用dockerfile 只需要小小的配置修改,就可以替代大量的更新工作,并且的所有的修改都是增量的方式进行分发和更新 从而实现自动化并且高效的容器管理


6.Docker与虚拟机比较

    1.docker 容器很快,启动和停止可以实现在秒级实现,这相比传统的虚拟机方式要快的多

    2. Docker 容器对系统资源占用很少,一台主机上可以同时运行数千台Docker容器

    3. Docker通过类似Git 的操作来方便用户获取,分发和更新镜像,指令简明,学习成本低

    4. docker通过dockerfile 配置文件来支持灵活的自动化创建和部署机制,提高工作相率

docker容器除了运行其中的应用之外,基本上不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销,传统虚拟机方式运行n个虚拟机(每个虚拟机需要单独分配独占的内存,磁盘等资源),而docker 只需要启动N个隔离的容器,并将应用放到容器即可

特性   容器 虚拟机
启动速度 秒级 分钟级
硬盘使用 一般MB 一般为GB
性能 接近原生    弱于
系统支持 单击支持上千个容器 一般几十个
隔离性 安全隔离 完全隔离

7.虚拟化与Docker

    虚拟技术是一个通用的概念,在不同的领域有不同的理解,在计算领域,一般指的是计算虚拟化,通常说的服务器虚拟化

    在计算机技术中,虚拟化是一种资源管理技术,是将计算的各种实体资源,如服务器,网络,内存以及存储等,给予抽象,转换成后呈现出来,打破实体结构之间的不可切割的障碍,使用户可以用比原来的组态更好的方式来应用这些资源

基于软件的虚拟化从对象 所在的层次,又可以分为应用虚拟化和平台虚拟化,其中 前者一般指的是一些模拟设备或wine这样的软件

后者又可以分为这样几类:

    完全虚拟化:

        虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统无需进行修改.如;VMware Workstation VirtualBox QEMU

    硬件辅助虚拟化

        利用硬件(主要是CPU) 辅助支持(目前x86体系结构上可用的硬件辅助虚拟化技术包括:Intel-VT和AMD-V) 处理指令来实现完全虚拟化的功能,客户操作系统无需修改,例如: VMware Workstation Xen KVM

    部分虚拟化

        只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改 现在有些虚拟化技术的早期版本仅支持部分虚拟化

超虚拟化

    部分硬件接口以软件的形式提供给客户机操作系统,客户操作系统需要进行需改,例如早期 Xen

操作系统级虚拟化

        内核通过创建多个虚拟的操作系统实例(内核和库) 来隔离不同的进程.容器相关技术在这个范围

应用程序  运行时环境 虚拟机操作系统 虚拟机管理程序  宿主机操作系统 硬件层

应用程序 运行时环境  docker容器 宿主机操作系统 硬件层

猜你喜欢

转载自blog.csdn.net/yinlell/article/details/81008387