一、概述

  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. 21. 无法执行该操作,因为链接服务器”Server_202”的 OLE DB 访问接口 “SQLNCLI10″ 无法启动分布式事务”

    无法执行该操作,因为链接服务器”Server_202”的 OLE DB 访问接口 “SQLNCLI10″ 无法启动分布式事务” 原因:调用存储过程的方式有问题,必须用JDBC方式调用存储过程才可以正常 ...

  2. 百度地图Label 样式:label.setStyle

    创建文本标注对象设置样式的时候,其中的backgroundColor属性居然还支持透明啊,不过改变数值好像对效果没有影响 var numLabel = new BMap.Label(num); num ...

  3. ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句

    ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句 存储过程 1.找到正在执行的存储过程的 sid ,serial# select   b.sid,b.SERIAL#,a.OBJEC ...

  4. android 获取http网络图片保存png

    1.android 获取网络图片的方式很多,普通网络通信的方式都可以用在获取网络图片上. android   http获取数据常用的方式: 1.Apache接口(HttpClient) 2.标准Jav ...

  5. 转: ES6异步编程:Thunk函数的含义与用法

    转: ES6异步编程:Thunk函数的含义与用法 参数的求值策略 Thunk函数早在上个世纪60年代就诞生了. 那时,编程语言刚刚起步,计算机学家还在研究,编译器怎么写比较好.一个争论的焦点是&quo ...

  6. Windows Azure 社区新闻综述(#70 版)

    欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话. 以下是过去一周基于您的反馈汇集在一起的内容: 文章.视频和博客文章 ·   如何选择 No ...

  7. applet部署,无需修改客户端设置。

    1  开发applet程序,编译成jar包 2  给jar包做数字签名: (1).用keytool生成密钥: keytool -genkey -keystore myapplet.keystore - ...

  8. python-认识Socket[入门篇]

    什么是socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链 ...

  9. 布线问题(prime)

    布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...

  10. 达内TTS6.0课件oop_day02