1. Docker服务nginx
做为一名后端攻城狮,对“服务”这个概念必定不陌生。好比,咱们作一个会员系统,它可能会须要数据库、缓存、消息队列,这些都是中间件服务,除此之外可能还须要依赖其它的Dubbo服务。web
在Docker中,服务就是用于生产环境的容器(“containers in production”)。咱们能够这样来理解这句话,当咱们运行某个镜像时,其实就产生了一个镜像实例,这个实例咱们把它叫作容器,接下来咱们对它作个升级,好比一些配置负载均衡,配置域名解析映射等,最终它以web服务的形式运行,那么这个升级版的容器就是Docker服务。能够设想一下开发一个Java应用程序是怎样的过程,首先建一个工程,而后编写代码,打成jar包,在内网运行,配置nginx,配置告警及监控,通过这一系列操做后,客户端才能经过公网访问到这个服务。(PS:类比Java的话,镜像就是类,容器就是对象,服务就是一个成型的APP产品,或者叫服务)docker
一个服务只运行一个映像,可是它将镜像运行的方式进行了编码,好比应该使用什么端口,应该运行多少个容器副本,以便服务具备所需的能力,等等。能够经过改变运行该软件的容器实例的数量来对服务进行扩容,从而为流程中的服务分配更多的计算资源。数据库
幸运的是,使用Docker平台很容易定义、运行和扩容服务。只须要写一个docker-compose.yml文件便可。后端
2. 第一个docker-compose.yml文件缓存
建立一个文件,文件命名为docker-compose.yml,将下列内容粘贴到文件中,保存网络
一个docker-compose.yml文件是一个YAML文件,它定义了Docker容器在生产环境中的行为。app
这个docker-compose.yml文件告诉Docker要作如下事情:负载均衡
3. 运行新的负载均衡的APP编码
首先,运行
接下来,给APP起个名字,好比叫getstartedlab
咱们的单个服务堆栈在一台主机上运行了5个容器实例,让咱们来看一看
除了“docker service ls”,咱们还能够经过“docker stack services”来查看
还能够经过修改docker-compose.yml来动态的扩展app,修改成后须要再执行一次
完整的演示
4. 备忘单