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 ...
随机推荐
- Java weak reference
一个对象被回收,必须满足两个条件: 没有任何引用指向它和GC在运行.把所有指向某个对象的引用置空来保证这个对象在下次GC运行时被回收. Object c = new Car(); c = null; ...
- Egret 获取不到皮肤中的按钮 id
最近Egret开发中遇到的Q,Egret 获取不到皮肤中的按钮 id,也就没法针对按钮进行监听和执行对应操作: 问题的关键就是,exml获取应该出现了差错: 经过查询我发现this.skinName的 ...
- sqlserver数据类型转换
Insert into [Cet.4] Select CONVERT(VARCHAR(20),CONVERT(DECIMAL(20,7),F1)) FROM Sheet1$ 我从外部导入了一个学号表, ...
- Mac Mysql 修改初始化密码
第一步: 点击系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务 第二步:进入终端输入:cd /usr/local/mysql/bin/回车后 登录管理员权限 sudo su回车后输入以 ...
- C#_02.15_基础六_.NET类
C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...
- 常见问题2:html+css效果综合整理
1.---文本框提示文字颜色--placeholder属性 <input type="text" placeholder="请输入提示文字" /> ...
- 35、concurrent.futures模块与协程
concurrent.futures —Launching parallel tasks concurrent.futures模块同时提供了进程池和线程池,它是将来的使用趋势,同样我们之前学习 ...
- 利用referer属性,记录百度搜索跳转参数
从百度搜索结果跳转到指定链接前,百度会发送一些参数,可以利用referer属性,在本站访问时记录百度跳转来之前的一些参数. 利用百度跳转前参数,进行一些相关的seo优化. 目前所用到的一些参数说明如下 ...
- Unity中调用DLL库
DLL -- Dynamic Link Library(动态链接库文件),这里以Window平台为例. Unity支持的两种语言生成的DLL库(C++.C#),这里以C#为例,C++网上可以搜索很详细 ...
- gitlab简单使用教程【转】
平时一直是用git来管理代码仓库,也用过一段时间github,但是github免费版不能建私有仓库.后来转到了bitbucket,后来被atlassian收购后有点不适应,而且在国内访问经常连不上.还 ...