一个软件,从诞生到正常使用,需要经过跟多步骤。
编码->构建->准备服务器->安装操作系统->安装JRE环境->安装依赖组件->部署应用->修改配置->开能防火墙->启动->功能验证。
有时候会出现这样的问题,开发的时候好好的,一到生产就会出现问题。这种问题的的原因涉及到很多方面。“数据不一致,配置不一致,流量,负载不一致,运行环境不一致”
这时候就需要用到Docker。Docker的作用用用一句简单的话来表示就是 “可以将操作系统、运行时环境、配置、内核参数统一起来,打包为一个镜像,就能保证应用,环境的一致性了”,我们可以简单的理解为:操作系统安装,运行时环境的准备、配置、内核参数的调整,这些人为的操作,在不同的环境我们只需要做一次,然后将这些操作打包成一个整体,而不同的环境,拿到的都是同一个整体的副本,自然就保证了一致性。
我们对容器就有了一个初步的认识,它解决了我们应用开发部署的一个痛点:环境一致性问题。
容器技术之所以这么受欢迎,还有几个其他方面的原因
轻量级:相比虚拟机来说,容器更加轻量级,因为我们共享主机操作系统内核,而不是像虚拟机一样,每个都有自己的操作系统。
快速部署:容器可以快速启动和停止,使开发人员能够快速地部署和测试应用程序。
环境一致性:容器提供一个一致性运行环境,确保在开发,测试和生产环境之间的应用程序行为一致。
资源利用率高:由于容器共享主机内核和其他资源,因此他们可以更加有效利用硬件资源,是的在一台物理主机上运行更多的容器成为可能。
隔离性:容器提供一定程度的进程隔离,使得在一台主机上运行的容器之间相互隔离,从而降低了安全风险。
通俗地说,Docker 就像是“应用程序的快递盒子”,你把应用放进这个盒子(镜像),无论拿到哪里打开(容器),应用都能按预期运行。Docker 通过巧妙的隔离和打包技术,简化了软件的部署和运行过程,使“代码在我机子上能跑”的问题成为过去。