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

  docker的实质就是虚拟化,利用LXC来实现类似VM的功能。是一个操作系统级的轻量级虚拟化方法。

  LXC所实现的隔离性主要是来自kernel的namespace, 其中pid, net, ipc, mnt, uts 等namespace将container的进程, 网络, 消息, 文件系统和hostname 隔离开。LXC所设置的namespace有pid namespace,net namespace,ipc namespace,mnt namespace,uts namespace,user namespace,有了以上6种namespace从进程、网络、IPC、文件系统、UTS和用户角度的隔离,一个container就可以对外展现出一个独立计算机的能力,并且不同container从OS层面实现了隔离。然而不同namespace之间资源还是相互竞争的,仍然需要类似ulimit来管理每个container所能使用的资源。

  Docker对container的使用基本是建立在LXC基础之上的,然而LXC存在的问题是难以移动 - 难以通过标准化的模板制作、重建、复制和移动 container。

  在以VM为基础的虚拟化手段中,有image和snapshot可以用于VM的复制、重建以及移动的功能。想要通过container来实现快速的大规模部署和更新, 这些功能不可或缺。Docker 正是利用AUFS来实现对container的快速更新。

  AUFS (AnotherUnionFS) 是一种 Union FS, 简单来说就是支持将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)的文件系统, 更进一步地, AUFS支持为每一个成员目录(AKA branch)设定'readonly', 'readwrite' 和 'whiteout-able' 权限, 同时AUFS里有一个类似
分层的概念, 对 readonly 权限的branch可以逻辑上进行修改(增量地, 不影响readonly部分的)。

  Docker的特性简要概括有一下有这么几点:

  1. LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的。
  2. 隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
  3. 网络管理相对简单,主要是基于namespace隔离
  4. cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量
  5. docker对disk的管理比较有限
  6. container随着用户进程的停止而销毁,container中的log等用户数据不便收集

  开发Docker实例并不像创建一台虚拟机、添加应用然后克隆那样简单。为成功创建并使用Docker基础设施,管理员需要对系统管理的各个方面有一个全面的理解,包括Linux管理、编排及配置工具比如Puppet、Chef以及Salt。这些工具生来就基于命令行以及脚本。

Docker官网
Docker-GitHub

最新文章

  1. 使用nginx反向代理,一个80端口下,配置多个微信项目
  2. iOS 字符串的宽度和高度自适应
  3. 文件上传---普通文件fileupload.jar和url文件httpUrlConnection
  4. 转:浅谈UNIX下Apache的MPM及httpd.conf配置文件中相关参数配置
  5. c#动态调用Webservices
  6. HTML 学习笔记 CSS样式(定位)
  7. python基础——面向对象编程
  8. uploadify springMVC
  9. iOS 核心动画
  10. 《OpenCV入门》(三)
  11. java条件选择学习
  12. [xUnit]尝试单元测试
  13. java simple check whether a file or directory.
  14. Genymotion error:The virtual device got no IP address
  15. Java基础学习笔记五 Java基础语法之面向对象
  16. Discuz3.2与Java 项目整合单点登陆
  17. Android OkHttp Get请求方式
  18. onmouseover和onmouseenter区别
  19. Polish Extraction Zone
  20. el-table复选框分页记忆

热门文章

  1. qq浏览器如何全屏截图
  2. python渗透测试工具包
  3. jemalloc内存分配器详解
  4. Django学习---原生ajax
  5. 潜类别模型(Latent Class Modeling)
  6. python 2.7中安装mysql
  7. 无法定位程序输入点 Can't load package
  8. SourceTree安装和使用
  9. YII cookie和session的使用方法
  10. $in 操作符