一、概述

  1、传统虚拟化技术:

     纯软件的虚拟化是通过对于硬件层的模拟从而实现允许运行多个操作系统;

     硬件辅助虚拟化需要硬件层面对于虚拟化的支持,类似Intel-VT技术等,具有更高的运行效率;

    解决方案:

      商业版解决方案:VMware vSphere、 VMware Fusion

      开源解决方案:KVM、Xen

  2、system-level虚拟化(container虚拟机技术):

     不需要模拟硬件层;

     共享同一个HOST OS的Kernal

      user space  instance = Container

        

    解决方案:

      LXC:

      OpenVZ:

      Docker:

      Imctfy:google开源的容器虚拟实现

  3、容器虚拟化和传统虚拟化的区别:

  传统虚拟化 容器虚拟化
创建速度 很慢 非常快
性能影响

通过对于硬件层的模拟,增加了系统调用链路

的环节,有性能损耗

共享Kernel,几乎没有性能损耗
资源消耗 很大 

很小,一台机器可以轻松创建多个

Container

操作系统覆盖 支持Linux、windows、Mac等 仅仅支持Kernal所支持的OS

  4、container核心技术cgroups,namespace,chroot:

    CGroups 限制容器的资源使用;

      Linux内核提供的限制,记录和隔离进程组所使用的资源,由Google工程师提出,后来整合进kernel;

      通过不同的子系统(blkio、cpu、cpuacct等)来实现对不听资源使用的控制和记录;

    Namespace机制,实现容器间的隔离;

      pid,容器有自己独立的进程表和1号进程

      net,容器有自己独立的network info

      ipc,在ipc通信时候,需要加入额外信息来标识进程;(进程间通信)

      mnt,每个容器有自己唯一的目录挂载;

      utc,每个容器有独立的hostname和domain

    chroot,隔离根文件系统:

      将host os的某个目录隔离成container的根目录;

二、进入Docker的世界:  

  dotCloud是docker公司的前身,专注于PaaS的云计算平台;可能是支持最广泛的PaaS平台;

  使用container的概念来解决应用stack部署的难题;

  定义:什么是docker

    开源的应用容器引擎,方便打包发布应用到容器中;

    Go语音领域比较大型的应用;

  docker实现:

    docker是container技术的实现,最早使用LXC作为container的引擎,最新版本的docker使用libcontainer替换了lxc;

    采用aufs文件系统来管理Image和container

    基于C/S架构的实现,Server端使用UnixSocket,也可以切换到TcpProtocol;

  aufs文件系统:

    1、advanced multi  layer unification filesystem //先进的多层的联合文件系统

    2、可以实现把多个不同目录的内容合并在一起;

    3、允许read-only和read-write目录并存;

        

  docker中的aufs:

    docker使用aufs来实现分层的文件系统的管理;

    只读部分定义为Image,可写部分是container

    Image类似一个单链表系统,每个Image包含一个指向parent image的指针;

    没有parent Image的image是base Image

        

  docker hub:

    类似于Github服务,用来分发Image

    大量标准的Image,例如Tutum/Ubuntu, Tutum/Mysql

  docker的优点:

    构建标准化的应用运行的环境;

    良好的RestAPI的实现;

    Container的实现,更少的资源的使用,创建速度快;

  docker的局限性:

  • 基于Linux64的,不能在32bit的环境下运行;
  • GuestOS只能是Linux Base
  • 隔离性相对于KVM等虚拟化技术有所欠缺;
  • 采用cgroup的resource control对于cpu的度量很困难;
  • container随用户进程的停止而销毁;    

  docker和LXC的区别:

  1. docker更专注于部署,而LXC专注于进程的隔离;
  2. docker有更好的api的方便对于docker容器的管理;
  3. dockerfile让image的创建变得容易;
  4. 通过docker hub方便image的分享; 

  docker的未来:

  1. 网络
  2. 安全性
  3. 容器引擎

docker基础入门之一的更多相关文章

  1. Docker基础入门

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  2. 小白学 Python 爬虫(4):前置准备(三)Docker基础入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  3. Docker基础入门及示例

    Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...

  4. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

  5. docker基础入门理解

    本文简单的介绍了一下docker的一些优点,以及使用方法 1. 理解docker 1.1 docker是什么? 1.2 为什么要使用Docker? 2. docker安装 3. docker-容器,镜 ...

  6. docker基础入门之二

    一.docker文件系统: linuxFS包括boot file system 和 root file system boot file system (bootfs),包含bootloader和ke ...

  7. 容器技术之Docker基础入门

    前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...

  8. Docker系列01—Docker 基础入门

    一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...

  9. Docker基础入门实践

    原文地址 基本概念 Docker三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 镜像 镜像可以理解为只读模板,如包含一个centos操作系统环境 容器 Do ...

随机推荐

  1. CPU核心数

    Process.ProcessorAffinity 属性: public IntPtr ProcessorAffinity { get; set; }属性值:位掩码,表示关联进程内的线程可以在其上运行 ...

  2. Oracle inner join、left join、right join 、+左边或者右边的区别

    我们以Oracle自带的表来做例子 主要两张表:dept.emp 一个是部门,一个是员工表结构如下: emp name null? Type Empno not null number(4) enam ...

  3. 製程能力介紹(SPC introduction) ─ Cp之製程能力解釋

    Cp之製程能力解釋 從常態分配的特性來看,在群體中 ±3σ(標準差) 之範圍內的值,應包含群體全部的 99.73%.也就是說,若以 6σ為單位,就可以代表整個分布的範圍,但是有 0.27% (2700 ...

  4. NOI2014 Day1

    NOI2014 Day1 起床困难综合症 题目描述:给出\(n\)个操作,每个操作包含一种运算\((XOR.OR.AND)\)和一个数,已知一开始的数字为\([0, m]\),问经过\(n\)次操作后 ...

  5. poj2390

    #include <stdio.h> #include <stdlib.h> int main() { int r,m,y,i; scanf("%d %d %d&qu ...

  6. Sprite Kit编程指南中文版下载

    下载地址:http://download.csdn.net/detail/xin814/6032573 关于Sprite Kit 重要提示:  这是API或开发技术的一个初版文档.虽然本文档的技术准确 ...

  7. css学习笔记三

    总结一下水平居中和垂直居中的方法,欢迎交流指正,共同进步! 1.水平居中 1.1):行内元素水平居中,在其父类设置text-align:center; 1.2): 块级元素水平居中有三种 第一种:定宽 ...

  8. 执行startx后Ubuntupassword正确进不去的问题

    今天在命令行里敲了 startx ,然后系统重新启动.输入password后,跳转到一下界面.之后又返回到登陆界面.一直这样循环输入password.进不去系统. 然后不得不用手机在网上查找解决的方法 ...

  9. HTML5增加的几个新的标签

    HTML5又2008年诞生,HTML5大致可以等同于=html+css3+javascriptapi.... so --->支持css3强大的选择器和动画以及javascript的新的函数 先来 ...

  10. MSSQL数库备份与还原脚本(多个库时很方便)

    每次通过 Management Studio 的界面操作备份或还原数据库,对于单个数据库还好,要是一次要做多个.那就还是用脚本快些,下面有两段脚本分享一下. ===================== ...