轻量级容器引擎DockerDockerDocker是一个开源项目,诞生于2013年初,最初是dotCloud内部的一个业余项目。它是基于谷歌推出的Go语言实现的。该项目后来加入了Linux基金会,遵守Apache2.0协议,项目代码维护在GitHub上。Docker自开源以来受到广泛关注和讨论,以至于dotCloud后来更名为DockerInc。Redhat有已经在其RHEL6.5中支持Docker;谷歌也在其PaaS产品中广泛使用。Docker项目的目标是实现一个轻量级的操作系统虚拟化解决方案。Docker基于Linux容器(LXC)等技术。了解Docker的前身LXCLinuxContainer是一种内核虚拟化技术,提供轻量级虚拟化隔离进程和资源。LXC是LinuxContainer的缩写,可以提供轻量级虚拟化隔离进程和资源,不需要提供指令解释全虚拟化的机制和其他复杂性。相当于C++中的NameSpace,将容器有效划分为将单个操作系统管理的资源划分为隔离的组,以更好地平衡隔离组之间相互冲突的资源使用需求。与传统的虚拟化技术相比,其优势在于:与主机使用相同的核心,性能损失小;它不需要指令级模拟;它不需要即时编译;运行指令不需要任何特殊的解释机制;避免了半虚拟化和系统调用替换的复杂性;轻量级隔离,在隔离的同时,还提供了一种共享机制,实现容器与主机之间的资源共享LinuxContainer提供了一种机制,支持在单个可控主机节点上同时执行多个隔离的服务器容器。LinuxContainer有点像chroot,提供一个虚拟环境,有自己的进程和网络空间,但又不同于虚拟机,因为lxc是??操作系统层面的资源虚拟化。LXC与docker的关系。Docker不是LXC的替代品。docker底层使用LXC来实现。LXC将linux进程沙盒化,进程之间相互隔离,可以控制各个进程的资源分配。在LXC的基础上,docker提供了一系列更强大的功能。Docker容器化的特性越来越流行,因为容器具有:灵活:即使是最复杂的应用程序也可以容器化。轻量级:容器利用并共享主机内核。可互换:您可以即时部署更新和升级。可移植:您可以在本地构建,部署到云端,并在任何地方运行。可扩展:您可以增加和自动分发容器副本。可堆叠:您可以立即垂直堆叠食物。为什么使用Docker作为一种新兴的虚拟化方式,Docker与传统的虚拟化方式相比有很多优势。首先,Docker容器的启动可以实现秒级,比传统的虚拟机方式要快很多。其次,Docker对系统资源的利用率高,单台主机上可以同时运行上千个Docker容器。Docker的优势具体来说,Docker在以下几个方面有很大的优势。更高效地利用系统资源由于容器不需要硬件虚拟化和运行完整操作系统等额外开销,因此Docker对系统资源的利用率更高。无论是应用程序执行速度、内存消耗,还是文件存储速度,都比传统的虚拟机技术更快更高效。因此,与虚拟机技术相比,一台相同配置的主机往往可以运行更多的应用程序。更快的启动时间传统的虚拟机技术往往需要几分钟才能启动应用服务,而Docker容器应用,由于直接与宿主内核一起运行,无序启动完整的操作系统,可以达到美妙的程度,甚至毫秒级的启动时间节省开发、测试和部署时间。一致的运行环境开发过程中的一个普遍问题是环境一致性。由于开发环境、测试环境、生产环境的不一致,导致在开发过程中有一些bug没有被发现,而Docker镜像提供了完整的运行环境,保证了应用运行环境的一致性。对于持续交付和部署,开发人员和运维人员最希望的是一次创建或配置,在任何地方都可以正常运行。使用Docker,您可以通过自定义应用镜像来实现持续集成、持续交付和部署。开发者可以使用Dockerfile构建镜像,并结合持续集成系统进行集成测试,而运维人员可以将镜像快速部署到生产环境中,甚至可以结合持续部署系统进行自动化部署,更容易迁移。因为Docker保证了执行环境的一致性,让应用的迁移更容易,Docker可以运行在很多平台上,无论是物理机、虚拟机、公有云、私有云,甚至是计算机,其运行结果是一致的,因此用户可以轻松地将运行在一个平台上的应用程序迁移到另一个平台上,而不必担心应用程序因运行环境的变化而无法正常运行。缺点隔离基于Hypervisor的虚拟机技术在隔离方面优于容器技术。他们的系统硬件资源是完全虚拟化的。当一个虚拟机出现系统级问题时,它通常不会波及到同一个虚拟机。主机上的其他虚拟机。但是容器不同。容器共享相同的操作系统内核和其他组件,因此当攻击发生时,更容易通过底层操作系统影响其他容器。性能无论是虚拟机还是容器,都通过不同的技术对应用本身进行了一定程度的封装和隔离,为降低应用之间以及应用与环境之间的耦合做了很多努力。但随机会产生较多的网络连接转发和数据交互,在低并发系统上不会太明显,往往不会成为应用瓶颈(可能分散在不同的虚拟机或服务器),但当同一个虚拟机或者服务器下的容器需要更高的并发支持,即当并发问题成为应用瓶颈时,容器会放大这个问题,所以并不是所有的应用场景都适用容器技术。存储方案容器的诞生并不是为了服务于OS的抽象。这是它和虚拟机最大的区别。这个基因意味着容器天生就是为应用环境多做努力,容器的伸缩性也是基于容器。一次性的特性,与此相反,对持久性存储解决方案的需求恰恰相反。docker容器提供的解决方案是利用volume接口,形成数据映射和传递,达到数据持久化的目的。但是这样也会造成资源的浪费和更多的交互。不管是映射到主机还是映射到网盘,都是退而求其次的方案。与传统虚拟机的特点相比,Docker容器虚拟机的启动秒级、分钟级。硬盘使用量一般为MB,一般为GB,性能接近本机系统支持。单机支持上千个容器,一般是几十个Docker版本。随着Docker的不断流行和发展,docker公司(或组织)也开始了商业化之路。Docker从17.03版本开始分为CE(社区版)和EE(企业版)。我们先来看看他们之前的区别和联系。版本差异DockerEEDockerEE由公司支持,可用于经过认证的操作系统和云提供商,可以运行来自DockerStore的经过认证的容器和插件。DockerEE提供三个服务级别:服务级别功能基本包括用于身份验证基础设施的Docker平台Datacenter)Advanced添加了Docker安全扫描和持续漏洞监控。可以在这个页面查看各个服务级别的价格:https://www.docker.com/pricingDockerCEDockerCE是免费Docker产品的新名称,DockerCE包含了完整的Docker平台,非常适合供开发者和运维团队构建容器应用。Docker公司认为,DockerCE和EE版本的推出为Docker的生命周期、可维护性和可升级性带来了巨大的提升。版本说明在此之前docker最新版本更新为docker1.13,并在1.13的基础上,从2017年3月1日起,版本格式改为如下项目描述版本格式YY.MMstableversioneveryquarter发布edge版本,每月发布当前的CE版本17.03.0-ce。总结Docker从17.03开始分为企业版和社区版。特征。EE版维护期为1年;CE稳定版每三个月发布一次,维护期为四个月;另外,CE还有edge版本,每月发布一次。Docker使用场景Web应用程序的自动化打包和分发。自动化测试和持续集成、发布。在面向服务的环境中部署和调整数据库或其他后端应用程序。从头开始编译或扩展现有的OpenShift或CloudFoundry平台,构建自己的PaaS环境如果本文对您有帮助,请关注并点赞;有什么建议也可以留言或私信。您的支持是我坚持创作的动力
