第三部分 服务
关于服务:
服务就是生成中的容器!一个服务就是一个运行中的镜像,定义需要端口,多少副本,多少容量。
我们可以在docker平台定义docker-compose.yml来扩展我们的服务。
定义一个docker-compse.yml文件
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: username/repo:tag
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
networks:
webnet:
定义内容如下:
image:从registry拉去镜像。
定义了一个叫web的服务,运行了5个镜像实例。每个实例被限制至多10%的CPU和50MB 内存资源。
restart_policy:
condition: on-failure
如果失败立马启动容器。
ports:
- "4000:80"
宿主机的 4000端口映射服务的80端口
networks:
- webnet
让多个容器通过webnet网络来负载访问80端口。
networks:
webnet:
定义一个默认网络webnet。该网络是通过overlay来实现负载均衡的。
运行负载均衡的应用
首先运行命令
docker build -t friendlyhello .
docker tag friendlyhello 13621151569/st-repo:getstartedlab
docker push 13621151569/st-repo:getstartedlab
docker swarm init
docker stack deploy -c docker-compose.yml getstartedlab
docker service ps getstartedlab_web
docker container ls -q
测试请求:
curl -4 http://localhost:4000
扩展程序:
调整docker-compose.yml文件的副本数重新部署:
docker stack deploy -c docker-compose.yml getstartedlab
docker stack rm getstartedlab
docker swarm leave --force