我们接下来将要扩展我们的应用并使其能够负载均衡,要做到这一点,我们不得不提到下一个概念:服务
关于服务
我们将发布的应用中的不同部分成为服务。例如,一个视频网站有可能由数据库服务、视频转码服务、前端服务构成。
服务事实上就是生产环境中的容器。一个服务由一个image产生,但服务同时还会规定image的运行细节如使用哪个端口与外界通信、使用多少容器来运行这个image的副本以使其获得其需要的性能,等等。
幸运的是,在docker平台下这一切工作的展开会如丝般顺滑--你只需编写一个名为docker-compose.yml
的文件。
docker-compose.yml
这个文件规定了容器在运行时的一些重要细节,示例如下:
version: "3"
services:
web:
image: username/repo:tag
deploy:
replicas: 5 #执行五个称为web的服务
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition:on-failure
ports:
- "80:80" #容器的80端口与外部的80端口进行映射
networks:
- webnet
networks:
- webnet
运行应用
在开始运行之前,先将该节点(后面会解释)设为swarm manager
docker swarm init
接下来便可以运行了,我们可以为运行时的应用起名为getstartedlab
docker stack deploy -c docker-compose.yml getstartedlab
关闭应用并推出swarm
- 关闭应用:
docker stack rm getstartedlab
- 推出swarm
docker swarm leave --force
总结
docker stack ls #列表展示运行中的任务或者应用
docker stack deploy -c <composefile> <appname># 根据yml配置文件来运行某个image
docker service ls #列表展示正在运行的服务
docker service ps <service>#列表展示与应用相关的任务
docker inspect <task or container> #监视任务或者容器的运行状态
docker container ls -q #列表展示容器信息
docker stack rm <appname> #结束应用的运行
docker swarm leave --force #将该节点推出swarm 模式