传统分发应用的痛点
软件开发中,环境的搭建和项目的部署是非常复杂的事情,因为有很多原因可能导致构建失败,下面就是常见的失败原因。
解决方案
面对这样的痛点,来自dotCloud公司的科研人员给出了它们的解决方案,答案就是容器化。
什么是容器?
容器是一个实体集,它包含软件运行所需要的所有东西。它很像虚拟机,但是比虚拟机更轻量。对于一个容器实例,它启动非常快,远比虚拟机要快上好几个数量级。
Docker 容器可以在任何地方运行:从个人开发的 PC 电脑 到自托管服务器,再到 Amazon、Google 和 Azure 等云托管服务。
容器可以使我们可以轻松地打包的软件,并为其运行提供一个明确定义的环境。
什么是镜像?
Docker 容器始终都是基于镜像的。启动容器之前,我们需要先指定一个镜像。当然也可以通过Dockerfile来指定镜像。
我们不需要从头来构建镜像,大部分的软件已经提供了基础的镜像,比如java,nodejs,python,php等等都提供了基础镜像,可以让我们基于这些基础镜像进行开发
容器是由一层层构建而成的,它很类似我们平时搭建我们的开发环境,与需要先安装软件构建所需要的环境,比如需要安装编译工具,安装运行库等等。
如何构建镜像分布式部署
实际工作中,我们需要部署成百上千台容器来提供服务,如果这些容器都是手动创建管理的话,那么这将变得非常麻烦,庆幸的是,我们由容器编排工具,docker compose可以快速地帮助我们构建分布式应用。
总结
有了容器之后,我们的开发环境和生产环境和测试环境有了一致性,通过容器,我们抹平了彼此环境之间的差距,并且让部署变得更加方便多了。