原文链接: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相关推荐

  1. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  2. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  3. Docker入门六部曲——容器

    原文链接:http://www.dubby.cn/detail.html?id=8734 准备 已经安装好Docker 1.13或者以上的版本. 读完的上一篇文章(基本引导). 简单的测试一下你的本地 ...

  4. Docker入门六部曲——基本引导

    原文链接:http://www.dubby.cn/detail.html?id=8733 预备知识 虽然我们接下来还是会介绍很多概念,但是最好还是提前了解什么是Docker,和为什么你会使用Docke ...

  5. tvpvar模型的建模步骤_风控建模六部曲

    这期开始咱们聊聊风控建模的事情.在借贷这个场景下,建立风控模型的目的大都是为了预测某个客户未来逾期的概率.主要的逻辑就是根据过去预测未来,逾期客户的行为是相似的.先收集历史上已经逾期到一定阶段的客户, ...

  6. 摆脱社恐六部曲, 你可以的!

    社恐的人不一般,一般的人不社恐.上帝为你关闭一扇窗时,同时也会为你打开一扇窗.社恐的人往往很善良,善解人意,随和,脑洞大,想象力丰富.他们大都只是因为童年.成长的遭遇与别人不同,而又没有人及时给予他们 ...

  7. .Net Core 3.1 Api跨域问题 六部曲

    一.在api配置文件Startup中定义全局变量: //定义跨域请求字符串变量         readonly string MyCorsPolicy = "CorsPolicy" ...

  8. [转]linux下的fms2流媒体服务器搭建六部曲之五-----flv播放器制作篇

     很多人也许苦于找不到一个稍微简单而又完整的flv播放器,我刚开始也找了很久找不到,后来干脆叫朋友帮忙做了个界面,然后自己添加代码做了个,感觉还可以,这里我不敢独享,把源码公开给各位参考一下. 要做f ...

  9. 使用JDBC操作数据库的六部曲

      要使用JDBC操作Mysql首先要导入JDBC_Mysql的驱动,maven导入如下: <dependency><groupId>mysql</groupId> ...

最新文章

  1. Android SearchView和ListView的结合使用
  2. kali linux ssh不要密码登录密码,kali linux 登录ssh服务常见问题
  3. 华为软件java笔试_华为软件笔试题4.10
  4. Atom飞行手册翻译: 2.5 查找和替换
  5. 关于APKsmail中加入代码报错All register args must fit in 4 bits
  6. html的那些小小细节
  7. 拖拽实例 对于设置监听setInterval 的理解
  8. Gitee使用(详细idea关联git)
  9. 中标麒麟Neokylin7桌面版安装指南——基于VirtualBox虚拟机
  10. rtbeginreg.html文件,【答疑】安装3DMAX2014版本出现“Autodesk Licensing”的小窗口 - 视频教程线上学...
  11. 传智播客dos命令_命令行英雄,原始播客
  12. 用Xbrowser连接CentOS
  13. 线性代数 --- 用条件数(condition number)来判断矩阵是否可逆
  14. 【H5游戏】-用js实现无聊到令人发指的游戏抽【奥特曼】卡牌,打怪兽啦
  15. 天使投资AI、风险投资VC、私募股权投资PE、投行IB、FOF、普通合伙人GP、有限合伙人LP、PIPE
  16. 让模态浮出水面的S2 刘易斯逻辑之八
  17. JAVA 实现《角色扮演侦探》游戏
  18. UltraEdit 15.10 注册码
  19. 专访前C#编译器组首席工程师Eric Lippert
  20. 普通卷积、Depthwise(DW)卷积、Pointwise(PW)卷积、Atrous卷积

热门文章

  1. docker一步安装mysql,docker的魅力就在于此
  2. 简单解决用VS编写hello world时命令行一闪而过
  3. 2021-2027年中国托育服务行业市场研究及前瞻分析报告
  4. Go 知识点(01)— 主协程与子协程执行顺序
  5. 机房收费系统总结【3】-数据库细节
  6. linux 虚拟环境
  7. PyTorch: 序列到序列模型(Seq2Seq)实现机器翻译实战
  8. LeetCode简单题之密钥格式化
  9. 光谱投影颜色感知器件与围栅多桥沟道晶体管技术
  10. MXNet 图优化与算子融合