Docker容器—容器的优势

本文主要讲述容器的概念,容器的优势,什么业务适用容器化部署

虚拟化技术

在开始容器化技术之前让我们来了解一下什么是虚拟化技术,相信大家做编程的平常也都会接触虚拟机如VMware等,虚拟机虚拟化了我们的硬件,在电脑中创造了一个虚拟的运行环境,一台电脑可以开启多个虚拟机。虚拟化技术主要分为全虚拟化架构、OS层虚拟化架构、硬件层虚拟化架构,而Docker则是基于OS层的虚拟化架构设计的,特点是灵活快速。

Docker容器

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

解决了什么问题?

Containers are a solution to the problem of how to get software to run reliably when moved from one computing environment to another. This could be from a developer’s laptop to a test environment, from a staging environment into production, and perhaps from a physical machine in a data center to a virtual machine in a private or public cloud.

容器是如何在从一个计算环境转移到另一个计算环境时使软件可靠运行的问题的解决方案。这可能是从开发人员的笔记本电脑到测试环境,从测试环境到生产环境,也可能是从数据中心的物理机到私有或公共云中的虚拟机。

想象这样一个情况,如果你在开发过程中本地使用Java10开发的WEB应用,但是上线到服务器时,发现服务器部署的是Java8的环境,这样你的项目就可能无法运行。如果你说这样无非就是修改项目为Java8就好了,但是如果你的代码中包含Java10的新特性的话在Java8中可以运行吗?那如果说该服务器Java版本的话,这个方案也是不被允许的,一个是服务器数量问题,还有就是修改服务器Java版本的话可能会造成服务器上其他程序出错。那这样容器化技术就可以很好的解决这一问题了,你可以轻松的将本地的环境全部复制到服务器上,就好像在服务上开了一个虚拟机,而虚拟机中的配置全部是你设定的,而且从一台服务器迁移到另一台服务器也十分方便。

解决方法是什么?

Put simply, a container consists of an entire runtime environment: an application, plus all its dependencies, libraries and other binaries, and configuration files needed to run it, bundled into one package. By containerizing the application platform and its dependencies, differences in OS distributions and underlying infrastructure are abstracted away.

简单说,一个容器包含了完整的运行时环境:一个应用、这个应用所需的全部依赖、类库、其他二进制文件、配置文件,它们统一被打入了一个包中。通过将应用平台和其依赖容器化,操作系统发行版本和其他基础环境造成的差异,都被抽象掉了。

所以你的应用程序用到的所有依赖全部和服务器配置无关,容器只提供一个接口供外部访问,一台传统的服务器上可以部署数十的Docker容器也是没有问题的。

优势

这个优势需要和虚拟机技术进行对比,通过上述介绍相信有的人会觉得容器技术和虚拟机技术太像了,我前面也说了容器也是虚拟机的一个分支,但是Docker容器比传统的虚拟机快上太多了,而且更加灵活,热拔插,即插即用,而且所占用的存储空间也极小,通常是你项目大小加上十几M。

适用范围

容器优势这么多,但是也不是所有应用都适用容器的。具体项目还是要具体讨论,但是可以肯定的是容器技术适用于绝大多数的应用服务,无论是传统的电商平台、还是高并发应用、还是企业SaaS平台都可以用到容器化技术,而且容器和现在流行的微服务简直是天作之和,可以说所有微服务项目都可以用Docker容器来部署,后面会讨论如何来通过容器来部署微服务应用。

-->