Docker容器相关

概述

什么是Docker?

**
Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司。自开源以来,Docker受到广泛的关注和讨论,目前已有多个相关项目,逐渐形成了围绕Docker的生态体系,dotCloud公司后来改名为Docker Inc,专注于Docker相关技术和产品的开发。

Linux容器技术
Docker引擎的基础是Linux容器(Linux Containers,LXC)技术。IBM DeveloperWorks上给出了关于容器技术的准确描述:

“容器有效地将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令集模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。”

Linux容器其实不是一个全新的概念。最早的容器技术可以追溯到1982年的Unix系统操作系统上的chroot工具(直至今天,主流的Unix、Linux操作系统仍然支持和带有该工具)。早期的容器实现技术包括Sun Solaris操作系统上的Solaris Containers(2004年发布),FreeBSD操作系统上的FreeBSD jail(2000年左右出现),以及GNU/Linux上的Linux-VServer(http://linux-vserver.org,2001年10月)和Open VZ(http://openvz.org,2005年)。虽然这些技术经过多年的演化已经十分成熟,但是由于种种原因,这些容器技术并没有被集成到主流的Linux内核中,使用起来并不方便。例如,用户要使用OpenVZ技术,就需要先给操作系统打上特定的内核补丁方可使用。
后来LXC项目借鉴了前人成熟的容器设计理念,并基于一系列新的内核特性实现了更具扩展性的虚拟化容器方案。更加关键的是,LXC被集成到了主流的Linux内核中,进而成为Linux系统轻量级容器技术的事实标准。

从Linux容器到Docker
在LXC的基础上,Docker进一步优化了容器的使用体验。Docker提供了各种容器管理工具(如分发、版本、移植等)让用户无需关注底层的操作,可以简单明了地管理和使用容器,让用户操作Docker就像操作一个轻量级的虚拟机那样简单。读者可以将Docker容器理解为一种沙盒(Sandbox)。每个容器内运行一个应用,不同的容器相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,容器自身对资源的需求也十分有限,远远低于虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。

Docker能做什么?

Docker的主要目标是"Build,Ship and Run Any App,Anywhere",即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件既可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。Docker基于Linux的多项开源技术提供了高效、敏捷和轻量级的容器方案,并且支持在多种主流云平台(Paas)和本地系统上部署,可以说Docker为应用的开发和部署提供了"一站式"的解决方案。

Docker与虚拟机的比较
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

  • Docker容器的启动和停止可以在秒级实现,相比传统的虚拟机方式更快。
  • Docker容器对系统资源需求很少,一台主机可以同时运行数千个Docker容器。
  • Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本低。
  • Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,工作效率更高。

传统虚拟机方式运行N个不同的应用就要启动N个虚拟机,每个虚拟机还需要单独分配独占内存、硬盘等资源,而Docker只需要启动N个隔离的容器,并将应用放到容器内即可。
当然,在隔离性方面,传统的虚拟机方式多了一层额外的隔离,但这并不意味着Docker就不安全,Docker利用Linux系统上的多种防护机制实现了严格可靠的隔离,从1.3版本开始,Docker引入了安全选项和镜像签名机制,极大地提高了使用Docker的安全性。


特性容器虚拟机
启动速度秒级分钟级13
磁盘使用一般为MB一般为GB
性能接近原生弱于原生
系统支持数量单机支持上千个容器一般最多几十个
隔离性安全隔离完全隔离

Linux虚拟机与Docker容器流程机制对比

现状

Docker项目目前已经加入了Linux基金会,遵循Apache2.0协议,全部开源代码均在https://github.com/docker/docker上进行维护。
现在主流的Linux操作系统都已经支持Docker。例如RHEL6.5/CentOS6.5及以上的操作系统,Ubuntu14.04操作系统,都已经默认带有Docker软件包。

PS:学习内容来自《Docker技术入门与实战》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值