1. 云原生应用程序部署需求
云原生应用程序采用微服务架构来开发,势必产生大量的子系统,发布大量的程序包,部署起来工作量不小。
程序运行是有依赖的,C/C++程序依赖各种动态库,Java程序依赖JDK和各种Jar库,Python程序依赖其解释器,目标操作系统必须满足一定的条件才能正常部署。
大家会说,C/C++程序全部用静态链接方式,Java程序用SpringBoot打包本来就是可执行的,Python程序打包成可执行的,不就能解决上面讲的问题么,但实际打包部署中我们不会这么做,总有不这么做的情形,或者开发人员不关心运维人员的工作,根本就不理解其中的一些工作量。
有没有一种统一的方法,在开发环境就把所有的依赖解决了,目标系统真正地不需要关心这些环境依赖问题?2013年Docker技术横空出世,完美地解决了这一系列问题。
2. Docker技术横空出世
Docker最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新。Docker项目后来加入了Linux基金会,遵从了Apache 2.0协议,项目代码在GitHub上进行维护。Docker自开源后受到广泛的关注和讨论,以至于dotCloud公司后来都改名为Docker Inc,并专注于Docker相关技术和产品的开发。目前,Docker已经成为全球最大的Docker容器服务提供商。
因此,Docker背后的开发公司就是Docker Inc。它提供了Docker这个开源项目,并持续对其进行维护和更