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 ...
随机推荐
- winform跨线程
在winform中经常用到多线程,那么用多线程对控件进行赋值和修改的时候呢会出现类似“该控件不是当前线程创建”的错误信息,在winform中两种办法: 1.在加载事件中写这句话,其作用呢就是线程的异步 ...
- 引用(ajaxfileupload.js) ajaxfileupload.js报这错jQuery.handleError is not a function
jQuery.handleError is not a function 原因是,经测试handlerError只在jquery-1.4.2之前的版本中存在,jquery-1.6 和1.7中都没有这个 ...
- canvas1
canvas学习(一) Canvas 学习之路 (一) canvas 是H5 里面神一样的东西,使得只是通过html和js就能做出非常棒的游戏和画面. 因为对前端无限的爱好,更加对canvas充满好奇 ...
- iOS 数组里面取字典的值
NSArray *arrData = @[@"1",@"2",@"3",@"4"]; NSArray *arrKey = ...
- [LeetCode][Python]15:3Sum
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 15: 3Sumhttps://oj.leetcode.com/problem ...
- JavaMail学习笔记
适逢计算机网络课程设计,本着挑战自己的态度,选择了一个从未接触的东西:邮箱客户端代理软件的设计.由于对相关协议非常陌生,只能依靠查找资料完成,在学习过程中碰到了一个非常好的博客,故向大家推荐一下. 一 ...
- favicon
<link rel="icon" href="Images/wangyi.ico" type="text/plain" />
- js高程笔记--创建对象
1.工厂模式 ex: function createPerson( name, age, job) { var o = new Object() ; o.name = name; o.job = jo ...
- MATLAB中为控件(uicontrol)绑定Callback函数(回调函数)
笔者走了许多弯路,终于找到这个方法,分享给大家. 'callback',@(~,~)colormapeditor(h) 如果版本老不支持“~”这种写法,那就改成: 'callback',@(x,y)c ...
- eclipse开发工具Import工程后,工程文件夹上出现黄色感叹号——解决方法
eclipse开发工具Import工程后,工程文件夹上出现黄色感叹号. 可能是Work目录无效,解决方法:删除Work目录即可,如下图所示: 删除后,如下图: