service是生產環境中某個image的container集合。一個service只使用一個image,但它編排這個image的運行方式,好比使用哪一個端口,根據需求運行多少份container。在docker stack負載均衡中,一個service中的全部container可能均勻的分佈在多臺虛擬機/物理機中,但它們共用一個端口,看起來就想是運行在一臺機器中的服務同樣。改變業務吞吐量,只須要更改這個service的container數量。html
使用docker-compose.yml文件,能夠輕鬆定義,運行和擴展docker平臺的services。web
docker-compose.yml
docker
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前,須要現初始化集羣管理docker swarm init
,完成以後才能夠在這個初始化的swarm上部署。關於swarm後章說明。app
部署app時給其取個名字docker stack depoly -c docker-compose.yml getstartedlab
。負載均衡
根據上面的yml文件,當前單service stack用同一個image運行了5個container。rest
跟查看container的命令docker container ls
相似(這裏執行這句會找到5個container),查看docker service的命令是docker service ls
,也可以使用命令docker stack services getstartedlab
,這裏意思是查看stack下的名爲getstartedlab的service。code
直接修改yml文件中的replicas
參數,再部署一遍docker stack depoly -c docker-compose.yml getstartedlab
就能夠改變container的數量。htm
刪除stackdocker stack rm getstartedlab
。blog
卸載swarmdocker swarm leave --force
。部署
docker入門1-docker container
docker入門3-docker swarm
docker入門4-docker stack