docker基础入门之一
一、概述
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的区别:
- docker更专注于部署,而LXC专注于进程的隔离;
- docker有更好的api的方便对于docker容器的管理;
- dockerfile让image的创建变得容易;
- 通过docker hub方便image的分享;
docker的未来:
- 网络
- 安全性
- 容器引擎
docker基础入门之一的更多相关文章
- Docker基础入门
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- 小白学 Python 爬虫(4):前置准备(三)Docker基础入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- Docker基础入门及示例
Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...
- Docker系列03—Docker 基础入门
本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...
- docker基础入门理解
本文简单的介绍了一下docker的一些优点,以及使用方法 1. 理解docker 1.1 docker是什么? 1.2 为什么要使用Docker? 2. docker安装 3. docker-容器,镜 ...
- docker基础入门之二
一.docker文件系统: linuxFS包括boot file system 和 root file system boot file system (bootfs),包含bootloader和ke ...
- 容器技术之Docker基础入门
前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...
- Docker系列01—Docker 基础入门
一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...
- Docker基础入门实践
原文地址 基本概念 Docker三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 镜像 镜像可以理解为只读模板,如包含一个centos操作系统环境 容器 Do ...
随机推荐
- vb socket的使用
说明:原本在 csdn 博客 写博客的,因为使用的移动宽带,csdn的 博客无法访问,所以先暂时到博客园写博客了 有能解决移动宽带 有部分网站不能访问的问题,请联系我,QQ 809775607 /** ...
- JPEG图像密写研究(一) JPEG图像文件结构
[转载]转载自http://www.cnblogs.com/leaven/archive/2010/04/06/1705846.html JPEG压缩编码算法的主要计算步骤如下: (0) 8*8分块. ...
- Oracle单个数据文件超过32G后扩容
Oracle单个数据文件超过32G后扩容 表空间数据文件容量与DB_BLOCK_SIZE的设置有关,而这个参数在创建数据库实例的时候就已经指定.DB_BLOCK_SIZE参数可以设置为4K.8K. ...
- centos6 qt ENV
打算做嵌入式图像处理,计划方案嵌入式Linux+OpenCV+QT,昨天简单入门OpenCV今天看看QT,QT就先弄Linux下面的,回家之前争取把基本的摸通,然后能在板子上跑起来 关于QT安装 QT ...
- jQuery判断滚动条滚到页面底部脚本
原文地址 http://www.111cn.net/wy/jquery/61741.htm
- New Relic——手机应用app开发达人的福利立即就到啦!
HiWork集成的第三方服务(机器人)将有新的添加啦,添加了BitBucket和New Relic.分别做下介绍啦! 1.BitBucket BitBucket 是一家源码托管站点.採用Mercuri ...
- dataset 用法(2)
1.为DataTable添加列 (1)添加列 DataTable tbl = ds.Tables.Add("User"); DataColumn col =tbl.Columns ...
- 由RGB到HSV颜色空间的理解
1. RGB模型 2. HSV模型 3. 如何理解RGB与HSV的联系 4. HSV在图像处理中的应用 5. opencv中RGB-->HSV实现 在图像处理中,最常用的颜色空间是RGB模型,常 ...
- 深入理解java虚拟机系列二——垃圾收集算法
在主流的商用程序语言中大多都是用根搜索算法(GC Roots Tracing)判断对象是否存活,比如java,c#等.当从GC Roots到某个对象不可达,则证明此对象是不可用的,将要被回收. 商业虚 ...
- ubuntu14.04下手动安装JDK + eclipse + Pydev
说明:本文在root用户下进行,如不是root用户命令前加sodu 一.手动安装JDK 1.下载JDK 从官网http://www.oracle.com/technetwork/java/javase ...