Docker应用架构层次
- Container容器(最底层)
- Service(同一服务的一组容器,可伸缩架构、负载均衡。可以service命令或stack创建)
- Stack(相互依赖的一组服务)
单机容器服务部署 - compose编排式
V2语法编排服务
version: '2'
services:
MyService:
image: my_image:tag
container_name: xxx
hostname: yyy
restart: always
env_file: .env
environment:
- key=val
ports:
- 'xxx:yyy'
volumes:
- xxx:yyy
links:
- OtherService
服务管理
docker-compose --version
docker-compose 【-f docker-compose.yaml】 up -d 【ServiceName】
docker-compose ps # 查看compose启动的容器
docker-compose down
集群服务部署,必须在ManageNode上操作
集群服务部署 - service命令式
#部署服务
docker service create
--name 服务名称 #同一网络内不同服务可通过服务名互访
--mode replicated|global
--network 集群网络 #要求overlay网络
--replicas 副本数
-p 端口:端口
--mount type=bind,src=源路径,dst=目标路径
镜像名称 command
#滚动更新服务
docker service update
--update-parallelism 并行更新节点数
--update-delay 更新间隔秒数
--limit-cpu 0.25 #限额cpu比例
--reserve-cpu 0.1 #预留cpu比例
--image 镜像名称
服务名称
docker service ls #服务列表
docker service ps 服务名称 #罗列服务下的task(服务包含的容器节点称作task)
docker service inspect --pretty 服务名称 #监控指定服务
docker service scale 服务名称=节点数 #服务伸缩
docker service rm 服务名称 #服务下线
集群服务部署 - compose编排式
Docker 1.13开始支持v3 compose语法
v3语法编排服务
version: '3'
services:
MyService:
image: my_image:tag
container_name: xxx
hostname: yyy
restart: always
env_file: .env
environment:
- key=val
deploy:
replicas: 5 #service启用副本数
resources:
limits:
cpus: 0.1 #每个节点cpu资源占比
memory: 50M #每个节点内存资源限额
restart_policy:
condition: on-failure
placement:
constraints: [node.role == manager]
ports:
- 'xxx:yyy'
networks:
- MyNetwork #service使用的负载均衡网络(要求overlay网络)
volumes:
- xxx:yyy
depends_on:
- OtherService
networks: #网络自动负载均衡
MyNetwork:
服务管理
docker stack deploy -c docker-compose.yml StackName #发布Service Stack(每次执行都会自动热更新stack)
docker stack services StackName #罗列stack下的service
docker stack ps StackName #罗列stack下的task
docker service ls #服务列表
docker service ps 服务名称 #罗列服务下的task(服务包含的容器节点称作task)
docker stack rm StackName #下线Service Stack