一、Docker是什么?

Docker是dotCloud于 2013 年3月推出的一个开源的应用容器引擎,用于开发、发布和运行应用程序的开放平台。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,并且实现虚拟化。

Docker能将应用程序与基础架构分开,从而快速交付软件。通过利用Docker的方法来快速交付测试和部署代码,可以减少编写代码和在生产环境中运行代码之间的延迟。

Docker用Go编程语言编写,并利用Linux内核的多个功能来交付其功能。

二、Docker的发展

• 2013年3月20日,dotCloud发布了Docker的首个版本,并将 Docker 源码进行开源。

• 2014年6月,DockerCon大会上Docker正式发布Docker 1.0 版本。

• 2016年6月,DockerCon大会上Docker 宣布了OCI(Open Container Initiative)正式成立。OCI 意在业界一起合作,开发一个开放、标准的容器格式和 Runtime。

• 2017年6月,DockerCon大会上Docker Inc公司将Docker拆分为 Docker-CE免费版和Docker-EE商业版。

Docker的"创新式镜像格式"及"容器运行时"迅速成为社区、客户和广泛行业的实际标准和基石。Docker的强大之处在于它通过可移植的形式和易于使用的工具在应用程序和基础设施之间创造了独立性。将Docker容器技术大众化,并解决了困扰数百万开发人员的"matrix from hell"问题,使容器技术成为主流。红帽、谷歌、亚马逊及DigitalOcean也迅速在其云服务平台提供了Docker的支持,主流云厂商的加入,更快加速了Docker的发展进度。

三、Docker的特性

3.1 快速、一致的交付应用程序

Docker允许开发人员使用提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。容器非常适合持续集成和持续交付(CI / CD)工作流程。

3.2 响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上、数据中心的物理或虚拟机上、云服务上或混合环境中运行。

Docker的可移植性和轻量级的特性还可以轻松地动态管理工作负载,并根据业务需求指示实时扩展或拆除应用程序和服务。

3.3 在同一硬件上运行更多工作负载

Docker轻巧快速,它为基于虚拟机管理程序的虚拟机提供了可行且经济高效的替代方案,因此可以利用更多的计算能力来实现业务目标。Docker非常适合高密度环境以及中小型部署,达到用更少的资源做更多的事情。

四、Docker容器和虚拟机的区别

4.1 什么是Docker容器?

容器是打包代码及其所有依赖项的软件的标准单元,因此应用程序可以从一个计算环境快速可靠地运行到另一个计算环境。Docker提供在松散隔离的环境(称为容器)中进行开发、运输和部署。Docker容器占用的空间少于VM(容器映像的大小通常为几十MB),可以处理更多的应用程序,并且需要的VM和操作系统更少。

4.2 什么是虚拟机?

虚拟机(VM)是将一台服务器转变为多台服务器的物理硬件的抽象。虚拟机管理程序允许多个VM在单台计算机上运行。每个VM包含操作系统、应用程序、必要的二进制文件和库的完整副本,占用数十GB。VM且可能启动缓慢。

4.3 Docker容器和虚拟机的区别

Docker容器与虚拟机技术对比,存在以下8个特点:

1.更快的启动速度

因为Docker直接运行于宿主内核,无需启动完整的操作系统,因此启动速度属于秒级别,而虚拟机通常需要几分钟去启动。

2.更高效的资源利用率

由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。

3.更高的系统支持量

Docker的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker运行的镜像数远多于虚拟机数量,对系统的利用率非常高。

4.持续交付与部署

对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile来进行镜像构建,并进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至进行自动部署。

5.更轻松的迁移

由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

6.更轻松的维护与扩展

Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

7.更弱的隔离性

Docker属于进程之间的隔离,虚拟机可实现系统级别隔离。

8.更弱的安全性

Docker的租户root和宿主机root等同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root 权限和宿主机的root虚拟机权限是分离的,并且利用硬件隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击。

五、Docker的应用场景

1.Web应用的自动化打包和发布。

2.自动化测试和持续集成、发布。

3.在服务型环境中部署和调整数据库或其他的后台应用。

4.从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

六、结语

从Docker 2013年正式上市以来,以一己之力带火了容器技术,给软件行业带来了颠覆性变革。依靠容器技术支撑的Docker已经迅速成为国内外各大云计算厂商及开发者手中的至宝。在一片热火朝天之中,新的革命已经悄然来临,让我们拭目以待吧。

远齐科技基于成熟的软件架构、互联网、物联网、大数据、人工智能等技术构建面向未来的集成开发平台系统。在自有集成开发平台基础上,基于最佳业务实践开发出丰富的软件功能模块、业务系统,为企业提供高效的定制化开发服务。

上一篇:Node.js—基于ChromeV8引擎的JavaScript运行环境 下一篇:网站建设 | 一文读懂Web缓存