Docker实现分布式应用功能教程
作者:何小有 发布时间:2023-09-29 20:43:38
本文详细讲述了Docker实现分布式应用功能。分享给大家供大家参考,具体如下:
这里接着前面一篇《Docker简单安装与应用入门教程》后面扩展应用程序。实现负载平衡,要做到这一点,必须在分布式应用程序的层次结构中的服务层实现。
在分布式应用程序中,应用程序的不同部分被称为“服务”。例如,一个视频共享站点,它可能包括一个用于将应用程序数据存储在数据库中的服务、后面的视频转码服务、用户上传东西、为前端服务等等。
服务实际上只是“生产中的容器”,服务只运行一个镜像,但它编码镜像运行的方式,例如,应该使用哪个端口,容器应该运行多少个副本,以便服务具有所需的容量等。缩放服务会更改运行该软件的容器实例的数量,从而为流程中的服务分配更多的计算资源。幸运的是,使用Docker平台定义、运行和扩展服务非常简单,只需编写一个docker-compose.yml文件即可。
创建docker-compose.yml文件
创建docker-compose.yml文件,并放在与Dockerfile
相同的目录下,docker-compose.yml文件是一个YAML文件,它定义了Docker容器在生产中的行为方式。
version: "3"
services:
web:
# 用你的用户名和镜像细节替换username/repo:tag命令
image: username/repo:tag
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
这个docker-compose.yml文件告诉Docker执行以下操作:
- 从注册表中取出我们在《Docker简单安装与应用入门教程》中上传的镜像。
- 运行该镜像的5个实例作为一个名为web的服务,限制每个服务器最多使用10%的CPU(跨所有核心)和50MB的RAM。
- 如果一个失败,立即重新启动容器。
- 将主机上的端口80映射到Web的端口80。
- 指示Web容器通过称为webnet的负载平衡网络共享端口80(在内部,容器本身将在临时端口上发布到Web的端口80)。
- 使用默认设置(这是一个负载平衡覆盖网络)定义webnet网络。
运行新的负载平衡应用程序
在使用docker stack deploy
命令之前,先运行以下命令。
$ docker swarm init
打开一个命令行终端,确保仍然在新目录的顶层,现在来运行它,必须给应用程序一个名称,在这里它被设置为getstartedlab
。
$ docker stack deploy -c docker-compose.yml getstartedlab
单个服务堆栈在一台主机上运行了5个部署镜像的容器实例,在应用程序中获取一项服务的服务ID。
$ docker service ls
您将看到Web服务的输出,并以您的应用程序名称作为前缀。如果您将其命名为与此示例中所示的相同,则名称将为getstartedlab_web。还列出了服务ID以及副本数量,镜像名称和暴露端口。
在服务中运行的单个容器称为任务。任务会被赋予唯一的数字增加的ID,最多可以运行在docker-compose.yml中定义的replicas数量。使用以下命令可以列出服务中的任务。
$ docker service ps getstartedlab_web
如果只列出系统上的所有容器,也会显示任务,但不会被服务过滤。
$ docker container ls -q
可以连续多次运行curl -4 http://localhost
,或者在浏览器中转到该URL并点击几次刷新。
无论哪种方式,都能看到容器ID的更改,演示负载平衡。在每个请求中,以循环方式选择5个任务中的一个来响应,容器ID将匹配您以前的docker container ls -q
命令的输出。
缩放应用程序
可以通过更改docker-compose.yml中的replicas值,保存更改并重新运行docker stack deploy
命令来扩展应用程序。
$ docker stack deploy -c docker-compose.yml getstartedlab
Docker会做一个更新操作,不需要先删除堆栈或杀死任何容器。现在,重新运行docker container ls -q
来查看重新配置的已部署实例。明显因为扩大了replicas值,即副本,有了更多的任务和容器。
接下来,结束应用程序和集群,使用docker stack rm
把应用程序结束,使用docker swarm leave
把集群结束。
$ docker stack rm getstartedlab
$ docker swarm leave --force
希望本文所述对大家docker容器的使用有所帮助
来源:https://blog.csdn.net/hekaiyou/article/details/79074360
猜你喜欢
- 什么是IISIIS即因特网信息服务,作为当今流行的Web服务器之一,它提供了强大的Internet和Intranet服务功能。因此,现在采用
- 典型的 Linux 发行版包含 Linux 内核,但还包含许多应用程序和工具。总的说来,Linux 分发版中出现的许多系统级别和用户级别的工
- Discuz!NT即将推出最新的版本。从官方了解到,作为康盛创想(Comsenz)旗下的核心产品,Discuz! NT 3.0将携带四大功能
- 在一个SNS站上,我们如何让用户看到他最想看到的feed,成了一个难题。feed是内容载体,并且依托用户关系进行传递。不过在选择feed显示
- InfoWorld举办的签名挽留Windows XP活动得到的支持数已经超过75000人,微软的生命周期表显示Windows XP将在6月底
- Adsense不扣量,的确是最值得选择的,也是最多站长选择的广告联盟。很多站长问我,如何提高adsence收入?我这里有4种经过证实行之有效
- 据电信市场研究与咨询公司Dittberner Associates公布的最新研究报告显示,今年一季度,中国的固定宽带用户已经超过美国在全球固
- SQL Server 2000是微软公司最新版的大型数据库服务器,其性能指标在各方面都有赶超Oracle数据库的趋势。在经历了SQL Ser
- 但凡是靠写东西在IT圈里混的,我们大可都归到IT写手的行列中来,具体考究一下,IT是信息技术的意思,写手嘛!就是写手啦,也没什么好解释的。I
- 晨报讯(记者 张黎明)2.164×0.4567 ,当你在百度输入这个相乘的要求,第一个结果将是乘积0.9882988。这还只是其中一个聪明的
- 这年头.PR值可以说是经典鸡肋(或许是我个人看法吧)在SEO火爆的07-08年.因为这玩意儿在排名中的作用微乎其微.所以在意的人也越来越少.
- 为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWare-tools,来实现文件共享。这里主要讲的是在Windows下用 V
- 提供高质量的内容和服务创建让人眼前一亮且有价值的内容较之于这个指南里讨论的因素更容易影响你的网站。用户看到后知道你网站上提供的内容质量很不错
- default encode为UTF-8,显示中文会变成乱码解决方案:Windows- >Pereferences- >Genr
- 美元在加速贬值,而google却在加慢付款,二月份的收入从3月27日开始到现在一直显示着“正在付款”而不见付款,以往这个时候钱早到拿到手了。
- 今夏,住在“爱情公寓”里的7个年轻人啼笑皆非的生活故事吸引了大量观众。这部由爱情公寓网站投拍的同名电
- 本人经过几次的测试,就用DEDECMS系统进行了几次的测试,发现百度对DEDECMS系统改版痛下杀手。我用的是DEDECMS系统,第一次是修
- 今天,收到Google Ad Planner小组发来的邮件,说我已经被接受为Google Ad Planner的beta测试员,可以登录提前
- 我们都知道外部链接可以提高网站权威、排名靠前,在搜索引擎面前,链接其实就代表投票,外部链接就是网站之间的互相投票,而内部链接则代表了网站内的
- 不管是Windows2000或者是WindowsXP,系统默认的注册表编辑器都不能摆脱这样的事实:只要是修改注册表键值,就必须在注册表编辑中