docker service介绍
service是生产环境中某个image的container集合。一个service只使用一个image,但它编排这个image的运行方式,比如使用哪个端口,根据需求运行多少份container。在docker stack负载均衡中,一个service中的所有container可能均匀的分布在多台虚拟机/物理机中,但它们共用一个端口,看起来就想是运行在一台机器中的服务一样。改变业务吞吐量,只需要更改这个service的container数量。
docker service命令
编写docker-compose.yml
使用docker-compose.yml文件,可以轻松定义,运行和扩展docker平台的services。
docker-compose.yml
version: "3"
services:
web:
image:cchenyang/get-started:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
# immediately restart containers if one fails
condition: on-failure
ports:
# map port 8001 on the host to web's port 8001
- "8001:8001"
networks:
- webnet
networks:
webnet:
运行负载均衡的docker app
初始化swarm
在部署docker app前,需要现初始化集群管理docker swarm init
,完成之后才可以在这个初始化的swarm上部署。关于swarm后章说明。
部署docker app
部署app时给其取个名字docker stack depoly -c docker-compose.yml getstartedlab
。
根据上面的yml文件,当前单service stack用同一个image运行了5个container。
查看docker service
跟查看container的命令docker container ls
类似(这里执行这句会找到5个container),查看docker service的命令是docker service ls
,也可使用命令docker stack services getstartedlab
,这里意思是查看stack下的名为getstartedlab的service。
伸缩docker app
直接修改yml文件中的replicas
参数,再部署一遍docker stack depoly -c docker-compose.yml getstartedlab
就可以改变container的数量。
删除docker app
删除stackdocker stack rm getstartedlab
。
卸载swarmdocker swarm leave --force
。
系列导航
docker入门1-docker container
docker入门3-docker swarm
docker入门4-docker stack