Docker教程3
来源:互联网 发布:淘宝网毛衣女装张大奕 编辑:程序博客网 时间:2024/06/06 22:31
服务(Services)的使用
本篇讲解服务(Services)的使用,我们测量我们的应用和启用负载均衡。为了达到这个目的,我们
必须提升我的分布式应用的层级,即服务。
官方文档
在看本篇文章前,一定要先把 Docker教程1 和 Docker教程2 看完
1. 介绍服务(Services)
在分布式应用里,不同片段的应用被称为”服务“。例如,想象一下,如果你想做一个视频分享网站,
当用户上传文件/视频时,它可能包含的有:一个服务在存储应用数据到数据库,一个服务在视频后台转码,
一个服务在前端,等等。
所以服务就是一个”生产中的容器“。一个服务器仅仅能运行一个镜像,但是它用编篡的方式让镜像运行,
端口应该是什么了?有多少容器的副本应该在运行?但是服务就有这个能力。
2. 创建docker-compose.yml文件
touch docker-compose.yml
这个文件是定义了Docker容器应该在生产环境中的行为。
文件内容为:
version: "3"services: web: # 格式是 username/repo:tag image: victor/first-repo:partion1 deploy: replicas: 5 resources: limits: cpus: "0.1" memory: 50M restart_policy: condition: on-failure ports: - "80:80" networks: - webnetnetworks: webnet:
这个 docker-compose.yml
内容的含义是:
- 拉取在Docker Registry的镜像,Docker教程2讲过了
- 运行5个镜像实例作为一个服务,被称作
web
,限制每个的实例的最多使用10%的CPU,一共是50MB- 如果一个实例失败了,立即重启容器
- 映射80端口从主机到web
- 通过负载均衡命令
web
容器分享80端口,被称作webnet
。从内部讲,容器他们自己发布web80端口是在一个短暂的端口- 定义
webnet
网络为默认设置,它是负载均衡的覆盖网络
3. 运行你的新的负载均衡应用
3.1 初始化swarm
$ docker swarm init
3.2 给应用取个名称
$ docker stack deploy -c docker-compose.yml getstartedlab
查看5个容器的列表
$ docker stack ps getstartedlab
此时你可以多次访问 http://localhost
,然后你会发现Container ID一直在变,
这就证明了负载均衡;每一个请求在5个副本之一被选中了,以轮流的方式响应。
如果 docker-compose.yml
文件内容有变化,你再执行那个 #3.2 发布命令
4. 卸载应用
docker stack rm getstartedlab
这虽然移除了应用,但是我们的一个swarm节点还在运行,通过 docker node ls
来显示
;这时我们也把swarm移除吧
docker swarm leave --force
以下总结以下,本篇所有涉及的命令吧
docker stack ls # 在当前的Docker主机中,显示所有在运行的应用docker stack deploy -c <composefile> <appname> # 运行指定的配置.yml文件 docker stack services <appname> # 显示该应用的所有相关服务docker stack ps <appname> # 列出这个应用相关联的所有容器docker stack rm <appname> # 卸载一个应用 docker node ls # 显示swarm节点docker swarm leave --force # 强制退出swarm
阅读全文
0 0
- Docker教程3
- docker教程(3)--volume
- DOCKER教程
- Docker教程
- Docker教程
- Docker教程(一) Docker入门教程
- docker中文 docker手册 docker教程
- docker中文 docker手册 docker教程
- Docker使用基本教程
- Docker简要教程
- docker简单教程
- Docker Swarm学习教程
- Docker Swarm学习教程
- 一小时Docker教程
- Docker简明教程
- Docker Swarm学习教程
- Docker使用教程
- Docker 完整教程
- 大暴搜 [BZOJ3303] 太鼓达人
- BP神经网络代码示例
- SQL注入之堆叠注入
- swing初始化一个JFrame实现点击A界面的一个按钮,显示B界面,无论点击多少次,都只显示一个B界面
- 黑白棋子移动
- Docker教程3
- UESTC
- 常用ansible命令
- python:while循环的使用方法
- PCB 布线的直角走线、差分走线和蛇形线基础理论
- Oracle零基础入门.第一周课程总结
- 飞行员配对方案问题
- JAVA 表示时间:Date和SimpleDateFormat类表示时间
- 直接调用阿里云视频点播API实现视频播放