优势:1、更快速的交付和部署;2、更高效的虚拟化;3、更轻松的迁移和扩展;4、更简单的管理;5、CPU/内存的低消耗。不足:1、无法在32bit的linux、Windows或unix环境下使用;2、docker对disk的管理比较有限等等。
本教程操作环境:linux5.9.8系统、docker-1.13.1版、Dell G3电脑。
作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。首先, Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。其次, Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而Docker只需要启动10个隔离的应用即可。
Docker 在如下几个方面具有较大的优势。
1)更快速的交付和部署
对开发和运维(devops)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
2)更高效的虚拟化
Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
3)更轻松的迁移和扩展
4)更简单的管理
5)CPU/内存的低消耗
6)快速开/关机
7)跨云计算基础构架
Docker的局限性有哪些?
Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
1)Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用。
2)LXC是基于Cgroup等Linux kernel功能的,因此Container的Guest系统只能是Linux base的。
3)隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库。
网络管理相对简单,主要是基于namespace隔离。
4)cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)。
5)docker对disk的管理比较有限。
6)container随着用户进程的停止而销毁,container中的log等用户数据不便收集。
所以针对以上局限性可以分为以下的适用性:
针对1-2,有windows base应用的需求的基本可以pass了。
针对3-5,主要是看用户的需求,到底是需要一个container还是一个VM,同时也决定了docker作为 IaaS 不太可行。
针对6-7,虽然是docker本身不支持的功能,但是可以通过其他手段解决(disk quota, mount –bind)。
总之,选用container还是vm,就是在隔离性和资源复用性上做权衡。另外即便docker 0.7能够支持非AUFS的文件系统,但是由于其功能还不稳定,商业应用或许会存在问题,而AUFS的稳定版需要kernel 3.8, 所以如果想复制dotcloud的成功案例,可能需要考虑升级kernel或者换用ubuntu的server版本(后者提供deb更新)。这也是为什么开源界更倾向于支持ubuntu的原因(kernel版本)。
扩展知识:Docker安全性问题
1)Docker环境安全
Docker的势头在过去的12个月里十分火热,很多人表示很少见如此能够吸引行业兴趣的新兴技术。然而,当兴奋转化为实际部署时,企业需要注意Docker的安全性。了解Docker的人都知道,Docker利用容器将资源进行有效隔离。因此容器相当于与Linux OS和hypervisor有着几乎相同的安全运行管理和配置管理级别。但当Docker涉及到安全运营与管理,以及具有保密性、完整性和可用性的通用控件的支持时,Docker可能会让你失望。
当Docker运行在云提供商平台上时,Docker安全性变得更加复杂。你需要知道云提供商正在做什么,或许你正在于别人共享一台机器。Docker虽然容器没有内置的安全因素,而且像Docker这样的新兴技术很难有比较全面的安全措施,但这并不意味着以后也不会出现。
2)Docker确保容器部署安全性
也有专家将Docker安全问题的实质定位于配置安全,认为Docker目前的问题是很难配置一个安全的容器。虽然现在Docker的开发人员通过创建非常小的容器来降低攻击面,但问题在于大型企业内部在生产环境中运行Docker容器的员工需要有更多的可见性和可控性。企业在部署数千或数万台Docker容器时,能够确保这些Docker容器都遵守企业安全策略进行配置是至关重要的事情。
Docker为解决这个问题,就需要增加Docker容器部署的实时可见性,同时实施企业制定的安全策略。也有一些厂商为此推出解决方案,给运营商提供了实时可见性并帮助他们执行容器级别的虚拟基础设施的安全策略。
推荐学习:《docker视频教程》
以上是docker的优势和不足有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!