Docker入门六部曲——Stack
来源:互联网 发布:植物生物学杨继淘宝 编辑:程序博客网 时间:2024/06/15 02:28
原文链接: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 details image: username/repo:tag deploy: replicas: 5 restart_policy: condition: on-failure resources: limits: cpus: "0.1" memory: 50M ports: - "80:80" networks: - webnet visualizer: image: dockersamples/visualizer:stable ports: - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: - webnetnetworks: 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 details image: username/repo:tag deploy: replicas: 5 restart_policy: condition: on-failure resources: limits: cpus: "0.1" memory: 50M ports: - "80:80" networks: - webnet visualizer: image: dockersamples/visualizer:stable ports: - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: - webnet redis: image: redis ports: - "6379:6379" volumes: - ./data:/data deploy: placement: constraints: [node.role == manager] networks: - webnetnetworks: 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入门六部曲——基本引导
- Docker入门六部曲——容器
- Docker入门六部曲——服务
- Docker入门六部曲——Swarm
- Docker(1)——Docker快速入门
- Docker入门实战(一)——Docker常用命令
- Docker入门实战(二)——Docker镜像操作
- Docker —— 从入门到实践
- Docker —— 从入门到实践
- Docker —— 从入门到实践
- Docker —— 从入门到实践
- docker入门——简单操作
- Docker入门——Hello World
- docker stack实践
- Docker的Online中文学习手册 Docker —— 从入门到实践
- Docker学习总结(1)——Docker实战之入门以及Dockerfile(一)
- Docker学习总结(2)——Docker实战之入门以及Dockerfile(二)
- UVALive4167 HDU2700 Parity【水题】
- asp.net 操作带输入输出参数的分页存储过程(—)
- 通向架构师的道路(第四天)之Tomcat性能调优
- Green关闭服务
- 设计模式(Design Pattern)
- Docker入门六部曲——Stack
- 深入理解Android NDK编译环境
- 通向架构师的道路(第五天)之tomcat集群
- Linux文件系统-linux学习001
- golang之TopN算法
- GemFire 入门篇1:GemFire 是什么?
- ListView中item的最外层使用margin属性失效
- select函数与阻塞socket/非阻塞socket没有半毛钱的关系!------select永远阻塞,直到xxx
- Rabbit Mq 流控解释