Docker-服务(4)
服务定义
在分布式应用程序中,应用程序的不同部分称为“服务”。例如,如果您想象一个视频共享站点,它可能包括一个用于在数据库中存储应用程序数据的服务,一个用户在上传内容后在后台进行视频转码的服务,一个用于前端的服务,等等。
服务实际上只是“生产中的容器”。服务只运行一个镜像,但它定义了镜像运行的方式 - 它应该使用哪些端口,应该运行多少个容器副本,服务所需的容量等等。扩展服务会更改运行该软件的容器实例的数量,从而为流程中的服务分配更多计算资源。
幸运的是,使用Docker平台定义,运行和扩展服务非常容易 - 只需编写一个docker-compose.yml文件即可。
前提条件
已经完成了前面一章的内容,分享镜像到了Docker Hup。
1. 安装Docker Compose
curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
2. 编写docker-compose.yml
注意修改image: scottcho/flask:v1
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: scottcho/flask:v1
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执行以下操作:
拉我们的镜像从版本库。
将该映像的5个实例作为调用的服务运行
web,限制每个实例使用,最多10%的CPU(跨所有内核)和50MB的RAM。如果一个失败,立即重启容器。
将主机上的端口4000映射到
web端口80。指示
web容器通过称为负载平衡的网络共享端口80webnet。(在内部,容器本身web在短暂的端口发布到 80端口。)webnet使用默认设置(负载平衡的覆盖网络)定义网络。
3. 运行新的负载均衡应用
在我们docker stack deploy首先运行命令之前,这个命令意味着该机器作为集群的管理节点
docker swarm init
创建服务
docker stack deploy -c docker-compose.yml getstartedlab
查看服务
我们的单个服务堆栈在一台主机上运行已部署映像的5个容器实例。我们来查看下吧。
在我们的应用程序中获取一项服务的服务ID:
[root@docker ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
g744u428v194 getstartedlab_web replicated 5/5 scottcho/flask:v1 *:4000->80/tcp
查看任务
在服务中运行的单个容器称为任务。任务被赋予以数字递增的唯一ID,最多为replicas您定义 的数量docker-compose.yml。列出您的服务任务:
[root@docker ~]# docker service ps getstartedlab_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
kjtlmtaict0c getstartedlab_web.1 scottcho/flask:v1 docker Running Running 16 minutes ago
z3uulg9o5zdx getstartedlab_web.2 scottcho/flask:v1 docker Running Running 16 minutes ago
6nrmivw0jwki getstartedlab_web.3 scottcho/flask:v1 docker Running Running 16 minutes ago
om6dv5bu0h9u getstartedlab_web.4 scottcho/flask:v1 docker Running Running 16 minutes ago
klgv8zjienz4 getstartedlab_web.5 scottcho/flask:v1 docker Running Running 16 minutes ago
查看负载均衡是否生效
访问:http://localhost:4000,不断的刷新页面,可以看见机器名不断的在发生变化。达到了负载均衡的作用。
4. 拓展应用程序
您可以通过更改replicas值docker-compose.yml,保存更改并重新运行docker stack deploy命令来扩展应用程序:
docker stack deploy -c docker-compose.yml getstartedlab
5. 关闭应用程序和退出群
关闭服务
docker stack rm getstartedla
节点退出集群
docker swarm leave --force
Docker-服务(4)的更多相关文章
- docker 服务注册
docker 服务注册 etcd docker run -d --name etcd -p 4001:4001 -p 7001:7001 elcolio/etcd
- Docker服务端防护
运行一个容器或应用程序的核心是通过 Docker 服务端.Docker 服务的运行目前需要 root 权限,因此其安全性十分关键. 首先,确保只有可信的用户才可以访问 Docker 服务.Docker ...
- Docker 服务
1. Docker服务 作为一名后端攻城狮,对“服务”这个概念一定不陌生.比如,我们做一个会员系统,它可能会需要数据库.缓存.消息队列,这些都是中间件服务,除此以外可能还需要依赖其它的Dubbo服务 ...
- 安装指定版本的docker服务
参考博客:Docker CE 镜像源站 参考博客:docker启动异常driver not supported 1. 说明 之前部署docker服务的时候都是安装最新的docker版本,并使用dock ...
- docker学习-----docker服务的安装
docker 以下观点个人理解,只做参考 一.docker本身的优势 1.docker他本身是一个容器,用来方便我们项目打包,做服务器虚拟化,统一开发者环境等多种优势:运行于docker上的项目可以快 ...
- Docker 随 docker服务重启
在创建时添加 重启 docker run --restart=always -d --name web -p : -v /data/web:/usr/local/tomcat/webapps tom ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- reboot 后 Docker服务及容器自动启动设置
https://blog.csdn.net/wxb880114/article/details/82904765 重启reboot操作系统后,发现docker 服务未启动,容器也未启动,天生反骨,怎么 ...
- CentOS 7安装Docker服务详细过程
---恢复内容开始--- Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟 ...
- 重启docker服务应用,自启停命令.
#重启docker服务应用,不自动开启docker容器 docker update --restart=no (docker容器CONTAINER ID 或 docekr容器NAMES) #重启doc ...
随机推荐
- quepy
A python framework to transform natural language questions to queries in a database query language. ...
- IO流(6)—转换流
1.处理流之二:转换流 InputStreamReader和OutputStreamWriter 2.当作用的文件就是一个文本文件且使用字节流传输时,需要把它转换成字符流,再在外面加上缓冲流以加速传输 ...
- delphi 设置多屏幕
//poScreenCenter时,窗体会显示到主显示器的中央 MainForm.Position := poScreenCenter; function TGAEAMainForm.GetWorkA ...
- 自定义UIPickView
效果图 源码 https://github.com/YouXianMing/Animations 说明 1. 数据适配器PickerViewDataAdapter含有PickerViewCompone ...
- Socket.IO学习之基础入门
原文:http://blog.csdn.net/weichuang_1/article/details/48831957 这里贴出Socket.IO官网 一.Socket.IO的介绍 Socket.I ...
- ElasticSearch 评分排序
背景 通过脚本改变评分 背景 近期有一个需求,需要对优惠券可用商品列表加个排序,只针对面值类的券不包括折扣券. 需求是这样的,假设有一张面值券 50 块钱,可用商品列表 A 100.B 40.C 10 ...
- jQuery之end()和pushStack()
原文: https://www.cnblogs.com/AndyWithPassion/archive/2012/02/06/jquery_pushStack_javascript.html jque ...
- 减少apk包大小的一种思路
现在apk大小主要是决定于两个:一个是图片一个是.SO文件(这个尽量用release包),而对于图片,既要越小,又要保持质量. 之前是PNG --> JPG, 现在直接是PNG ---> ...
- MySql.Data.dll的版本
在.Net下访问Mysql,先是用6.4.4,老有问题,也不知道哪个版本可以用,查询官网 https://dev.mysql.com/doc/connector-net/en/connector-ne ...
- CentOS7中设置Tomcat8开机自启动
CentOS7中设置Tomcat8开机自启动 本文介绍了在centos7中配置tomcat的开机自启动的一些操作步骤,仅供参考. 环境是CentOS 7 ,jdk版本是1.8.0_191,tomcat ...