Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739
准备知识
- 安装Docker(版本最低1.13)。
- 阅读完Docker入门六部曲——Swarm,并且完成其中介绍的内容。
- 拷贝一份
docker-compose.yml
。 - 确保你的虚拟机都是可用的,使用
docker-machine ls
查看,执行docker-machine start myvm1
来启动管理节点,执行docker-machine myvm2
启动工作节点。
介绍
在Docker入门六部曲——Swarm中,我们学会了如何配置一个swarm集群,并且知道如何在swarm集群上部署应用。
现在,我们开始了解Docker层级关系中的最高一个层级——stack。一个stack就是一组有关联的服务的组合,可以编排在一起,一起管理。
我们在Docker入门六部曲——Swarm中部署的是一个单一的服务。现在我们来尝试部署多个服务。
在docker-compose.yml
中添加服务是很简单的。首先,我们添加一个可视化的服务来监控我们的swarm中运行了哪些容器。
1、编辑docker-compose.yml
,使用你自己的用户名和镜像名来代替我的:
version: "3"
services:web:# replace username/repo:tag with your name and image detailsimage: username/repo:tagdeploy:replicas: 5restart_policy:condition: on-failureresources:limits:cpus: "0.1"memory: 50Mports:- "80:80"networks:- webnetvisualizer:image: dockersamples/visualizer:stableports:- "8080:8080"volumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints: [node.role == manager]networks:- webnet
networks:webnet:
我们只做了一件事,就是加了一个和web
服务平级的服务visualizer
。你可以看到一些新的东西:volumes
,给这个可视化服务访问宿主机的socket文件的权限;placement
,确保这个服务只会运行在swarm的管理节点上。这个可视化服务是一个开源项目,可以用一个图来看到整个swarm上运行的容器。
2、把这个docker-compose.yml
拷贝到管理节点上:
docker-machine scp docker-compose.yml myvm1:~
3、使用docker stack deploy
部署:
$ docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml getstartedlab"
Updating service getstartedlab_web (id: angi1bf5e4to03qu9f93trnxm)
Updating service getstartedlab_visualizer (id: l9mnwkeq2jiononb5ihz9u7a4)
4、可视化服务
使用docker-machine ls
查看虚拟机的ip,打开浏览器,访问ip:8080:
visualizer
正常运行在管理节点上,还可以看到有5个web
的容器在运行。你还可以使用docker stack ps <statck>
来证实这个:
docker-machine ssh myvm1 "docker stack ps getstartedlab"
持久化数据
我们继续添加一个服务,来持久化数据。
1、编辑docker-compose.yml
:
version: "3"
services:web:# replace username/repo:tag with your name and image detailsimage: username/repo:tagdeploy:replicas: 5restart_policy:condition: on-failureresources:limits:cpus: "0.1"memory: 50Mports:- "80:80"networks:- webnetvisualizer:image: dockersamples/visualizer:stableports:- "8080:8080"volumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints: [node.role == manager]networks:- webnetredis:image: redisports:- "6379:6379"volumes:- ./data:/datadeploy:placement:constraints: [node.role == manager]networks:- webnet
networks:webnet:
Redis有一个官方的镜像,名字就是redis
,没有username/repo
。端口是6379,这是预先配置好的。
最重要的是持久化redis的数据:
+ 要保证redis只会运行在管理节点上,这样就可以让redis运行在同一个文件系统上。
+ redis访问的文件路径是一样的,这样就可以从这个路径来读取和存储文件。
2、在管理节点上创建redis的数据持久化路径
$ docker-machine ssh myvm1 "mkdir ./data"
3、上传新的docker-compose.yml
$ docker-machine scp docker-compose.yml myvm1:~
4、再部署一次
$ docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml getstartedlab"
5、打开浏览器,访问http://localhost
再使用visualizer
来查看一下
Docker入门六部曲——Stack相关推荐
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- Docker入门六部曲——容器
原文链接:http://www.dubby.cn/detail.html?id=8734 准备 已经安装好Docker 1.13或者以上的版本. 读完的上一篇文章(基本引导). 简单的测试一下你的本地 ...
- Docker入门六部曲——基本引导
原文链接:http://www.dubby.cn/detail.html?id=8733 预备知识 虽然我们接下来还是会介绍很多概念,但是最好还是提前了解什么是Docker,和为什么你会使用Docke ...
- tvpvar模型的建模步骤_风控建模六部曲
这期开始咱们聊聊风控建模的事情.在借贷这个场景下,建立风控模型的目的大都是为了预测某个客户未来逾期的概率.主要的逻辑就是根据过去预测未来,逾期客户的行为是相似的.先收集历史上已经逾期到一定阶段的客户, ...
- 摆脱社恐六部曲, 你可以的!
社恐的人不一般,一般的人不社恐.上帝为你关闭一扇窗时,同时也会为你打开一扇窗.社恐的人往往很善良,善解人意,随和,脑洞大,想象力丰富.他们大都只是因为童年.成长的遭遇与别人不同,而又没有人及时给予他们 ...
- .Net Core 3.1 Api跨域问题 六部曲
一.在api配置文件Startup中定义全局变量: //定义跨域请求字符串变量 readonly string MyCorsPolicy = "CorsPolicy" ...
- [转]linux下的fms2流媒体服务器搭建六部曲之五-----flv播放器制作篇
很多人也许苦于找不到一个稍微简单而又完整的flv播放器,我刚开始也找了很久找不到,后来干脆叫朋友帮忙做了个界面,然后自己添加代码做了个,感觉还可以,这里我不敢独享,把源码公开给各位参考一下. 要做f ...
- 使用JDBC操作数据库的六部曲
要使用JDBC操作Mysql首先要导入JDBC_Mysql的驱动,maven导入如下: <dependency><groupId>mysql</groupId> ...
最新文章
- Android SearchView和ListView的结合使用
- kali linux ssh不要密码登录密码,kali linux 登录ssh服务常见问题
- 华为软件java笔试_华为软件笔试题4.10
- Atom飞行手册翻译: 2.5 查找和替换
- 关于APKsmail中加入代码报错All register args must fit in 4 bits
- html的那些小小细节
- 拖拽实例 对于设置监听setInterval 的理解
- Gitee使用(详细idea关联git)
- 中标麒麟Neokylin7桌面版安装指南——基于VirtualBox虚拟机
- rtbeginreg.html文件,【答疑】安装3DMAX2014版本出现“Autodesk Licensing”的小窗口 - 视频教程线上学...
- 传智播客dos命令_命令行英雄,原始播客
- 用Xbrowser连接CentOS
- 线性代数 --- 用条件数(condition number)来判断矩阵是否可逆
- 【H5游戏】-用js实现无聊到令人发指的游戏抽【奥特曼】卡牌,打怪兽啦
- 天使投资AI、风险投资VC、私募股权投资PE、投行IB、FOF、普通合伙人GP、有限合伙人LP、PIPE
- 让模态浮出水面的S2 刘易斯逻辑之八
- JAVA 实现《角色扮演侦探》游戏
- UltraEdit 15.10 注册码
- 专访前C#编译器组首席工程师Eric Lippert
- 普通卷积、Depthwise(DW)卷积、Pointwise(PW)卷积、Atrous卷积