Docker究竟是什么,为什么这么流行,它的优点和缺陷有哪些
发布时间:2025-05-21 12:32:39 发布人:远客网络
一、Docker究竟是什么,为什么这么流行,它的优点和缺陷有哪些
简单得来说,Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs);目前云服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机。Docker则实现了一种应用程序级别的隔离;它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的“容器”上来。
Docker是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台。由两部分组成:
Docker Engine:一个便携式、轻量级的运行环境和包管理器。(注*单OS vs单线程,是不是跟NodeJS特别像?)
Docker Hub:为创建自动化工作流和分享应用创建的云服务组成。(注*云端镜像/包管理 vs npm包管理,是不是跟npm特别像?)
从2013年3月20日,第一个版本的Docker正式发布到 2014年6月Docker 1.0正式发布,经历了15个月。虽然发展历程很短,但Docker正在有越来越流行的趋势。
其实Container技术并非Docker的创新,HeroKu, NodeJitsu等云服务商都采用了类似这种轻量级的虚拟化技术,但Docker是第一个将这这种Container技术大规模开源并被社区广泛接受的。
Docker相对于VM虚拟机的优势十分明显,那就是轻量和高性能和便捷性,以下部分摘自:KVM and Docker LXC Benchmarking with OpenStack
运行时的性能可以获取极大提升(经典的案例是提升97%)
管理操作(启动,停止,开始,重启等等)都是以秒或毫秒为单位的。
像虚拟机一样敏捷,而且会更便宜,在bare metal(裸机)上布署像点个按钮一样简单。
将应用和系统“容器化”,不添加额外的操作系统,
你会拥有足够的“操作系统”,仅需添加或减小镜像即可。在一台服务器上可以布署100~1000个Containers容器。
开源的,免费的,低成本的。由现代Linux内核支持并驱动。注*轻量的Container必定可以在一个物理机上开启更多“容器”,注定比VMs要便宜。
正在越来越受欢迎,只需要看一看Google的趋势就知道了,docker or LXC.
还有不计其数的社区和第三方应用。
不计其数的云服务提供创建和管理Linux容器框架。
有关Docker性能方面的优势,还可参考此IBM工程师对性能提升的评测,从各个方面比VMs(OS系统级别虚拟化)都有非常大的提升。转载,仅供参考。
二、什么是Docker
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
三、docker是干什么的
docker是开源的应用容器引擎,能更好地在容器内运行任何应用。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker是 PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持,就连Google的 Compute Engine也支持docker在其之上运行。
1、Docker是基于Linux64bit的,无法在32bit的linux/Windows/unix环境下使用。
2、LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的。
3、隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库。
4、网络管理相对简单,主要是基于namespace隔离。
5、cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)。
6、Docker对disk的管理比较有限。
7、container随着用户进程的停止而销毁,container中的log等用户数据不便收集。