这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
为什么需要Docker
开发往往不是一个人的事,完成一个项目一般都需要一个团队互相配合,当我们的某项工作需要别人经手时就可能出现各种各样的问题。
举个例子,我们完成的一个项目需要使用许多杂七杂八的依赖,当我们的开发工作完成时,我们需要把工作交由测试人员去完成,这个时候由于测试方缺少了项目运行所需的依赖,我们开发的项目跑不起来;又或者,测试把依赖全部配置完了,但是由于开发环境的不同,项目还是跑不起来。因为你开发用的是Linux,使用到了其自带的库,而测试用的是Windows,两者的库并不相同。
这还仅仅是测试,后续还需要运维去到处部署项目,想想就头大。Docker就是来解决这一问题的。
介绍
为了解决上面提到的痛点,我们可以把项目所需要的环境(包括依赖)直接一股脑地装进一个“箱子里”,谁需要谁就可以直接拿走,以达到开箱即用的目的。
Docker使用到了集装箱的思想,就像一艘货船上有许多集装箱一样,每个集装箱装的货物可以是完全不同的种类,不仅可以装东西,也可以装许多不同的东西,因为集装箱将环境隔离起来了。
说到这,我们可以发现这一容器思想与虚拟机有些类似,不过不同的是,虚拟机虽然也可以隔离环境,但是它很“沉”,而Docker就“轻”得多,这是Docker流行的一个重要原因。
Docker技术的核心
Docker技术的三大核心概念,分别是:
- 仓库(Repository)
- 镜像(Image)
- 容器(Container)
刚才提到的集装箱其实是一个Docker仓库,里面可以放置物品,而仓库中的物品,就是Docker镜像,它可以复制许多份,谁需要谁就去根据镜像复制一份,而复制出来的东西就称作Docker容器。