是什么
简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案。
拿现实世界中货物的运输作类比, 为了解决各种型号规格尺寸的货物在各种运输工具上进行运输的问题,我们发明了集装箱
Docker的初衷也就是将各种应用程序和他们所依赖的运行环境打包成标准的container/image,进而发布到不同的平台上运行
从理论上跟各种虚拟机Image也起着类似的作用
Docker container和普通的虚拟机Image相比, 最大的区别是它并不包含操作系统内核.
普通虚拟机将整个操作系统运行在虚拟的硬件平台上, 进而提供完整的运行环境供应用程序运行, 而Docker则直接在宿主平台上加载运行应用程序. 本质上他在底层使用LXC启动一个Linux Container,通过cgroup等机制对不同的container内运行的应用程序进行隔离,权限管理和quota分配等
每个container拥有自己独立的各种命名空间(亦即资源)包括:
PID 进程, MNT 文件系统, NET 网络, IPC , UTS 主机名等
与LXC有什么不同
基本上你可以认为目前的Docker是LXC的一个高级封装,提供了各种辅助工具和标准接口方便你使用LXC,你可以依靠LXC和各种脚本实现与docker类似的功能,就像你不使用APT/yum等工具也可以自己搞定软件包安装一样,你使用他们的关键原因是方便易用!
实际使用中,你一般不用关心底层LXC的细节,同时也不排将来docker实现基于非LXC方案的可能性
在LXC的基础上, Docker额外提供的Feature包括:标准统一的打包部署运行方案, 历史版本控制, Image的重用,Image共享发布等等
Container构建方案
除了LXC,Docker的核心思想就体现在它的运行容器构建方案上
为了最大化重用Image,加快运行速度,减少内存和磁盘footprint, Docker container运行时所构造的运行环境,实际上是由具有依赖关系的多个Layer组成的。例如一个apache的运行环境可能是在基础的rootfs image的基础上,叠加了包含例如Emacs等各种工具的image,再叠加包含apache及其相关依赖library的image,这些image由AUFS文件系统加载合并到统一路径中,以只读的方式存在,最后再叠加加载一层可写的空白的Layer用作记录对当前运行环境所作的修改。
有了层级化的Image做基础,理想中,不同的APP就可以既可能的共用底层文件系统,相关依赖工具等,同一个APP的不同实例也可以实现共用绝大多数数据,进而以copy on write的形式维护自己的那一份修改过的数据等
历史和生态环境
2013.01 做为dotcloud内部项目开始启动
2013.03.27 正式作为public项目发布
2014.1 被BLACK DUCK 评选为2013年10大开源新项目“TOP 10 OPEN SOURCE ROOKIE OF THE YEAR”
目前的状态 ( 2014.3 )
Docker 0.8.1
10000+ github stars(top 50)
350+ contributors
1500+ fork
具体应用方面,可以看到百度至少在2013年10月份就已经成功使用Docker支持其BAE平台的Paas服务。
相关推荐
简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案 拿现实世界中货物的运输作类比,为了解决各种型号规格尺寸的货物在各种运输工具上进行运输的问题,我们发明了集装箱 Docker...
docker-从入门到实践,介绍,安装,使用和配置。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。
微服务与Docker 是近年来分布式大规模服务架构中两个主流的技术趋势,本书主要介绍中小型企业在架构落地过程中...同时简单介绍了利用Rancher 搭建Docker 容器云平台的快速解决方案,非常适合云计算从业人员阅读、学习。
容器虚拟化指的是在os上将应用打包以进程的形式运行,应用和应用间非完全隔离,但是更轻量,效率高,lxc和docker都可以称为容器级虚拟化,区别在于docker可以理解为经过精美封装过更加好用的lxc,有更好的接口和更...
Docker容器是资源分割和调度的基本单位,封装整个服务的运行时环境,用于构建、发布和运行分布式应用的一个框架。它是一个跨平台、可移植并且...Docker作为轻量级的虚拟化方式,实现了PaaS平台的高效部署、运行和维护。
虚拟化解决方案 - 具有一些高级功能的 Nginx 发行版 - Vim 的 JavaScript 端口 C# - 一种 Azure Function 解决方案,用于抓取 GitHub 中的所有图像文件并无损压缩它们。 这将使文件大小减小,但不影响尺寸和...
OVN与Docker容器的集成。 OVN为容器提供网络虚拟化。 OVN与容器的集成以两种模式工作-“底图”模式或“覆盖”模式。 在“底层”模式下,OVN需要OpenStack设置才能提供容器网络。 在这种模式下,可以创建逻辑网络,...
本文介绍了一种针对Docker容器的自动化监控实现方法,旨在给Docker运维体系的建立提供相关的解决方案。谈到容器,有人首先会想到LXC(LinuxContainer)。它是一种内核虚拟化技术,是一种操作系统层次上的资源的虚拟...
这是给谁的任何对容器化不熟悉的工程师(运行完整的操作系统,在主机(例如您的笔记本电脑)上虚拟化),都希望通过示例开始使用docker和docker-compose 。有关此代码的一些注意事项本示例使用一个简单的应用程序...
DPI 是运营商网络中用于流量识别和处理的专用设备,...Docker是一种容器级的虚拟化技术,可在其基础上进行DPI部署。阐述了Docker与DPI部署有关的底层报文处理技术DPDK,并给出了基于Docker的DPI虚拟化部署方案建议。
Docker是一种开源的应用容器引擎,使用Docker可以快速地实现虚拟化,并且实现虚拟化的性能相对于其他技术来说较高。并且随着云计算的普及以及对虚拟化技术的大量需求,使得云计算人才供不应求,所以一些大型企业对...
什么是DockerDocker 是一个开源的...为了减少这些痛苦,Dokcer提供了很好的解决方案:打包我们的应用以及依赖到Docker容器中,从而避免了环境不一致Docker的一些概念镜像(Image):Docker 镜像(Image),就相当于是
Docker的目标是实现轻量级的操作系统虚拟化解决方案。 学习Docker首先要了解几个概念: 镜像—Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息; 容器—容器相当于一个可以运行起来的虚拟机,应用程序...
这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验.Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。环境配置如此麻烦,换一台...
虚拟化工具Docker依赖于LXC容器技术。 它将容器或图像存储在存储库中,从而使它们以后不可变。 从存储库中提取特定映像并将其作为容器启动,将导致在以后的所有部署场景中启动相同的构建工件。 根据我们的建议,我们...
1.Docker入门简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的...Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容( LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装, 让用户不需要去关心容器的管理,使得操作更为简便。用户操作 ...
简介 什么是Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现...Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 ...