Docker的那些事儿—Docker简介(1)
什么是Docker?
Docker官网是这么描述的:WHAT IS DOCKER? Docker is the world’s leading software containerization platform. Docker is the company driving the container movement and the only container platform provider to address every application across the hybrid cloud. Today’s businesses are under pressure to digitally transform but are constrained by existing applications and infrastructure while rationalizing an increasingly diverse portfolio of clouds, datacenters and application architectures. Docker enables true independence between applications and infrastructure and developers and IT ops to unlock their potential and creates a model for better collaboration and innovation.
Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基金会,遵从Apache 2.0协议,项目代码在GitHub上进行维护。Docker自开源后受到广泛的关注和讨论,以至于dotCloud公司后来都改名为Docker Inc。Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器(LXC)等技术。在LXC的基础上Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。
下图比较了Docker容器和传统虚拟机的不同之处,容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现。说的直白一点就是容器虚拟化的是操作系统,而虚拟机虚拟化的是硬件。
为什么要用Docker?
作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。首先,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而Docker只需要启动10个隔离的应用即可。具体说来,Docker 在如下几个方面具有较大的优势:
更快速的交付和部署
对开发和运维(devops)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
更高效的虚拟化
Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
更简单的管理
使用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
对比传统虚拟机总结
特性 容器 虚拟机
启动 秒级 分钟级
硬盘 一般为MB 一般为GB
性能 接近原生 弱于
系统支持 单机支持上千个容器 一般几十个
怎样学习Docker?
学习docker的途径很多,网络上关于docker资源丰富且比较杂
1. 本教程将指导你一步步的学习docker的架构、镜像、容器、网络、存储等
2. Docker官网