标签:epo 平台 art port 需要 内存 查看 replace 视频分享
在本部分,我们伸缩我们的应用,并且完成负载均衡功能。为了完成这个,我们必须在前面提到的层级结构中上移一层:service。
在一个分布式应用中,应用的不同功能部分被称为服务。例如如果你想像一个视频分享网站,它可能包含存储数据在数据库的服务,视频转码的后台服务以及前段用户上传视频的服务。
在docker情景中,简单来说__服务就是生产环境中运行的容器__。一个服务仅仅运行一个镜像,但是它组织镜像如何运行,使用哪个端口,运行多少个副本等等。伸缩一个服务,仅仅需要指定更多的计算资源到每个进程中的服务,从而改变容器实例的数量。
在docker平台上,很容易定义、运行和伸缩服务,通过使用docker-compose.yml文件。
一个docker-compose.yml文件是一个YAML文件,用来定义生产环境中容器的运行方式。
新建一个docker-compose.yml文件:
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: dockerjie/get-started:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
networks:
webnet:
上面的docker-compose.yml文件描述了:
在使用docker stack deploy命令之前,先运行:
docker swarm init
现在运行app
docker stack deploy -c docker-compose.yml getstartedlab
这个服务stack正在一个宿主机上运行我们部署的镜像的5个容器实例。
查看服务列表:
docker service ls
上面的输出是关于web服务的信息,分别是服务ID,服务名字,模式,副本的数量,镜像以及暴露的端口信息。
运行服务里面的单个容器叫做task。每一个task有一个递增的数字ID。
列出服务包含的tasks。
docker service ps getstarted_web
同样的查看容器列表也能观察到web服务包m含的task:
docker container ls
测试效果:
可以看到每次访问对应的hostname都不相同,因此部署的web服务已经具有负载均衡的能力。
修改docker-compose.yml文件中的replicas的值,重新运行:
docker stack deploy -c docker-compose.yml getstartedlab
docker执行一个in-place的更新,没必要停止stack或者停止任何容器。
现在重新查看容器列表:
docker container ls -q
同样的,如果我们扩容了,除了容器增加了,服务包含的task也会相应的增加。
docker stack rm getstartedlab
docker swarm leave --force
使用Docker很容易构建app和扩缩容。
docker stack ls # List stacks or apps
docker stack deploy -c <composefile> <appname> # Run the specified Compose file
docker service ls # List running services associated with an app
docker service ps <service> # List tasks associated with an app
docker inspect <task or container> # Inspect task or container
docker container ls -q # List container IDs
docker stack rm <appname> # Tear down an application
docker swarm leave --force # Take down a single node swarm from the manager
标签:epo 平台 art port 需要 内存 查看 replace 视频分享
原文地址:https://www.cnblogs.com/Spground/p/9791236.html