最近有个段子非常火,说有个程序员梦见自己被阎王召见,让他帮忙开发一个后台管理系统。在一笑而过之后,我觉得如果要是能把这个系统做出来,应该颇具娱乐性,也顺便了解一下高并发以及大数据的相关技术——每天要上生死簿的人估计不会少。于是,本着娱乐大众的目的,我抓来了一个mysql的DBA@BigCat_X还有一个前端@MC,开始构建这个系统。
我们初步决定的技术路线为:数据库使用mysql,web服务器使用nginx,web后端框架采用tornado,消息队列以及缓存采用redis,而前端使用H5。如果后期脑洞开的大的话,之前在博客里用过的ES搜索也可以往上加。
为了保证部署环境的统一,我们将部署环境做成docker。此docker中装有mysql5.7,nginx以及redis,并放在docker hub上,这样便可保证三人都使用相同的环境开发;而python和tornado的版本相对稳定,因此并没有把python和tornado放入docker。
因此,在这篇博客中,我会介绍docker的基本概念以及使用方式。
首先来讲docker是什么东西:docker是一套基于容器(Container)的环境引擎,开发者可以在docker上的容器中进行开发、部署、运行的操作。与虚拟机相比,docker容器更轻量化,占据资源更少,这使得每个docker容器都可以轻易的大规模部署,而无需担心消耗过多资源。此外,docker便于分发,这样可以使得同组开发人员使用相同的开发/部署环境。
Docker有两个核心的概念:镜像(Image)和容器(Container)。如果套用面向对象的概念的话,镜像相当于类,而容器相当于对象。在docker中,我们可以使用一个镜像来创建多个容器,每个容器都可以跑不同的服务,这样我们只要拉下来一个镜像,就可以运行我们项目所需的所有服务,而不是将每个服务各拉一个镜像(虽然官方推荐这么做。。。)。
如下,我们使用capliu/deadheaven:final镜像启动了nginx,mysql-server和redis: