为什么会出现docker?

一般我们做业务系统的时候,会有几个环境:

测试环境,仿真环境,生产环境。

其关系为:先在测试环境进行功能和环境测试及验证,然后在仿真环境中进行部署代码测试,仿真没问题后最后再同步到生成环境中。

三个环境的环境配置必须完全一样,不然会出现一个问题:在我的电脑上可以运行,为啥你的不行???

与此同时,还有其他的风险,比如:

a.版本更新,导致服务不可用;

b.需要集群部署时,需要一台台配置多个服务器环境;

c.因为项目需要进行跨平台部署时,会出现不兼容的情况;

··· ···

有没有一种方法,当我把应用做完后,其他人想用的时候直接拿去用呢,不用去关注环境变量的配置/环境的搭建??

这个时候,docker就要善良登场了~~~

#yyds干货盘点#Docker基础之Docker概述_测试环境

通过logo我们可以看到,一个轮船上装了多个集装箱,而每个集装箱互相之间又是独立的,所以这个就是docker的一个思想。

我们可以在一个平台(虚拟机/物理机)部署多个应用,每个应用之间是独立的,并且每个应用是可移植的,不会依赖于平台的环境。

Docker和虚拟机的区别

传统虚拟机工作原理

在物理服务器上部署虚拟化底层,然后安装虚拟机,最后在虚拟机上安装环境从而进行应用的部署和使用。

#yyds干货盘点#Docker基础之Docker概述_服务器_02

虚拟机缺点:

1.资源占用十分多

2.冗余步骤多

3.启动慢


容器化技术

容器化技术不是模拟的一个完整的操作系统,而是把应用当作了系统中的一个服务或进程。

#yyds干货盘点#Docker基础之Docker概述_测试环境_03

docker和虚拟机技术的不同:

1.传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统山安装和运行软件。

2.容器内的应用直接运行在宿主机的内核,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了。

3.每个容器间互相隔离,每个容器内都有一个属于自己的文件系统,互不影响。

在生产应用中,传统方式和Docker特别尤为明显:

1.应用更快速的交付和部署

传统:一堆帮助文档,安装程序

Docker:打包镜像发布测试,一键运行

2.更便捷的升级和扩缩容

使用docker之后,搭建部署应用和搭积木一样!

项目打包为一个镜像,扩展服务器A,服务器B

3.更简单的系统运维

容器化之后,开发和测试环境高度一致。

4.更高效的计算资源利用

1核2G服务器,可以运行几十个tomcat!

docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例。服务器的性能可以被压榨到极致。