一、概述

  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. Selenium自动化测试(java语言)

    Selenium介绍 Selenium 1.0 包含 core. IDE. RC. grid 四部分,  selenium 2.0 则是在两位大牛偶遇相互沟通决定把面向对象结构化( OOPP) 和便于 ...

  2. 使用百度语音识别REST API,做全平台语音识别

    百度语音开发介绍文档: http://yuyin.baidu.com/docs/asr# 使用语音识别,需要在百度申请一个应用,然后拿到API Key和Secret Key,然后才可以使用语音识别 p ...

  3. IOS深入学习(1)之图标文件(icon files)

    1 前言 我相信大家在做IOS一定经常会跟图标文件(icon files)打交道,今天我们就来简单的学习一下iPhone和iPad程序中的icon files. 2 详述 除了iTunesArtwor ...

  4. perl 解json数组

    <pre name="code" class="cpp">http://11.36.10.82:4000/api/bus?bus=307&f ...

  5. Xcode证书破解 iphone真机部署

    Xcode证书破解 iphone真机部署 证书伪造: 先按照该教程的步骤添加证书.注意,原教程选择的是"系统"证书,这里我们用"登录"证书,切记. Xcode破 ...

  6. WKWebView与sessionID的因果

    问题描述:在webView中点击下载按钮后,下载成功文件,然后再去点击上传文件,这时候服务器会报用户未登录错误. 暂时分析的原因是WKWebView在下载后cookie会保存服务器产生的session ...

  7. Codechef Nuclear Reactors 题解

    There are K nuclear reactor chambers labelled from 0 to K-1. Particles are bombarded onto chamber 0. ...

  8. Node.js开发指南中的例子(mysql版)

    工作原因需要用到nodejs,于是找到了<node.js开发指南>这本书来看看,作者BYVoid 为清华大学计算机系的高材生,年纪竟比我还小一两岁,中华地广物博真是人才辈出,佩服. 言归正 ...

  9. MyBatis使用Generator自动生成代码

    MyBatis中,可以使用Generator自动生成代码,包括DAO层. MODEL层 .MAPPING SQL映射文件. 第一步: 配置好自动生成代码所需的XML配置文件,例如(generator. ...

  10. android样式跟主题

    简单说类似与自定义控件,只不过自定义控件针对的是view 而样式与主题针对的是属性.元素 在TexvView中引入样式 layout.xml <?xml version="1.0&qu ...