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