标签:视频 网络共享 tps cpu ack 初始化 内容 memory cond
回顾 第一部分讲的是如何安装Docker镜像
第二部分讲的是如何自定义一个容器
第三部分讲的是如何自己实现负载均衡(现在在这里)
在分布式应用程序中,应用程序的不同部分被称为“服务”。“例如,如果你想象一个视频共享网站,它可能包括一个用于将应用数据存储在数据库中的服务,一个用于用户上传内容后后台视频转码的服务,一个用于前端的服务,等等。 服务实际上只是“生产中的容器”。一个服务只运行一个映像,但是它编码了映像运行的方式——它应该使用什么端口,应该运行多少个容器副本,这样服务就有了它需要的容量,等等。扩展服务会改变运行该软件的容器实例的数量,从而为该服务分配更多的计算资源。幸运的是,使用Docker平台定义、运行和扩展服务非常容易——只需编写一个docker-compose.yml文件。
version: "3"
services:
web: # replace username/repo:tag with your name and image details
image: littlecurl/test:part2
deploy: replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
networks:
webnet:
保存并退出
注意:yml文件有个死规矩,冒号和横杠后面必须有一个空格,否则文件不能起作用。
yml 是YAML(Yet Another Markup Language ,另一种标记语言)文件的后缀名。这种语言吸收了XML等多种语言的功能,同时去除了XML繁冗的标签对。
这个 docker-compose.yml文件告诉Docker去做下面这些事情:
1. image: littlecurl/test:part2 从云端 pull 下来第二部分时候上传的镜像
2. replicas: 5 运行该镜像的5个实例,服务起名为 web
3. cpus: "0.1" memory: 50M 限制每个实例最多只能使用10%的CPU和50MB的RAM
4. restart_policy: condition: on-failure 当启动失败的时候重启
5. ports: - "4000:80" 将主机端口4000映射到web端口80
6. networks: - webnet 指示web的容器通过称为webnet的负载均衡网络共享端口80
7. 最后个是一个空的networks: webnet: 使用默认设置的 webnet网络(负载均衡网络)
现在yml文件已经有了,想要跑起来yml中设定的镜像,需要先初始化一下docker swarm
docker swarm init
名词解释:
swarm 有关swarm的学习,推荐一篇博客:https://blog.csdn.net/chinagissoft/article/details/51864150
docker stack deploy -c docker-compose.yml getstartedlab
docker service ls
docker service ps getstartedlab_web
docker container ls -q
curl -4 http://localhost:4000
docker stack rm getstartedlab
再停swarm
docker swarm leave --force
手动实现负载均衡其实就是手动配置一个容器的资源。
标签:视频 网络共享 tps cpu ack 初始化 内容 memory cond
原文地址:https://www.cnblogs.com/littlecurl/p/Docker2.html