Docker Swarm 练习:投票 App
经典示例: Example Voting App 示例投票App
GitHub地址:https://github.com/dockersamples/example-voting-app
网络不好的同学,我已经把源码下载,地址:https://download.csdn.net/download/weixin_48447848/77354937
详细讲解地址请看:Docker Compose 练习:投票 App
Example Voting App 示例投票App
跨多个Docker容器运行的简单分布式应用程序。
Linux 容器 示例
Linux 堆栈使用 Python、Node.js、.NET Core(或可选的 Java),使用 Redis 进行消息传递,使用 Postgres 进行存储。
如果您在 Windows 上使用 Docker Desktop,则可以通过切换到 Linux 容器来运行 Linux 版本,或者运行 Windows 容器版本。
在这个目录下运行:
docker-compose up
该应用程序将在http://localhost:5000
运行,结果将在http://localhost:5001
。
或者,如果你想在Docker Swarm上运行它,首先确保你有一个 swarm。如果没有,请运行:
docker swarm init
一旦你有了你的 swarm,在这个目录中运行:
docker stack deploy --compose-file docker-stack.yml vote
上手操作 Swarm 多节点集群
前期准备
请看之前文章Docker Swarm 多节点集群,找到一种适合你的搭建多节点的方法。
代码讲解
大部分内容与Docker Compose 练习:投票 App相同,只对Swarm部署的yaml文件讲解。
example-voting-app/docker-stack.yml
deploy
:设置部署的参数
replicas
容器个数update_config
更新的参数,几次,间隔时间restart_policy
重启的策略
version: "3"
services:redis:image: redis:alpinenetworks:- frontenddeploy:replicas: 1update_config:parallelism: 2delay: 10srestart_policy:condition: on-failuredb:image: postgres:9.4environment:POSTGRES_USER: "postgres"POSTGRES_PASSWORD: "postgres"POSTGRES_HOST_AUTH_METHOD: "trust" # 存在问题,需要添加的字段volumes:- db-data:/var/lib/postgresql/datanetworks:- backenddeploy:placement:constraints: [node.role == manager] # db部署到manager节点vote:image: dockersamples/examplevotingapp_vote:beforeports:- 5000:80networks:- frontenddepends_on:- redisdeploy:replicas: 2update_config:parallelism: 2restart_policy:condition: on-failureresult:image: dockersamples/examplevotingapp_result:beforeports:- 5001:80networks:- backenddepends_on:- dbdeploy:replicas: 1update_config:parallelism: 2delay: 10srestart_policy:condition: on-failureworker:image: dockersamples/examplevotingapp_workernetworks:- frontend- backenddepends_on:- db- redisdeploy:mode: replicatedreplicas: 1labels: [APP=VOTING]restart_policy:condition: on-failuredelay: 10smax_attempts: 3window: 120splacement:constraints: [node.role == manager]visualizer:image: dockersamples/visualizer:stableports:- "8080:8080"stop_grace_period: 1m30svolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints: [node.role == manager]networks:frontend:backend:volumes:db-data:
上手操作
新安装的docker是没有启动swarm的,需要初始化
node1节点192.168.0.18为manger管理节点,主要敲命令的:
$ docker swarm init
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (172.18.0.4 on eth1 and 192.168.0.18 on eth0) - specify one with --advertise-addr
[node1] (local) root@192.168.0.18 ~
$ docker swarm init --advertise-addr 192.168.0.18
Swarm initialized: current node (y8431tcl51sx54riya31rbvvg) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-1qrsj4vfuv69hxoizdf21bswxvio4jdjdpvizi42n5g4vicwmv-9rh0c9o6h6iq6mtuge0i3yws2 192.168.0.18:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.[node1] (local) root@192.168.0.18 ~
$
node2节点192.168.0.17:
$ docker swarm join --token SWMTKN-1-1qrsj4vfuv69hxoizdf21bswxvio4jdjdpvizi42n5g4vicwmv-9rh0c9o6h6iq6mtuge0i3yws2 192.168.0.18:2377
This node joined a swarm as a worker.
[node2] (local) root@192.168.0.17 ~
node3节点192.168.0.16:
$ docker swarm join --token SWMTKN-1-1qrsj4vfuv69hxoizdf21bswxvio4jdjdpvizi42n5g4vicwmv-9rh0c9o6h6iq6mtuge0i3yws2 192.168.0.18:2377
This node joined a swarm as a worker.
[node3] (local) root@192.168.0.16 ~
创建服务
$ git clone https://github.com/dockersamples/example-voting-app
Cloning into 'example-voting-app'...
remote: Enumerating objects: 971, done.
remote: Total 971 (delta 0), reused 0 (delta 0), pack-reused 971
Receiving objects: 100% (971/971), 982.39 KiB | 9.54 MiB/s, done.
Resolving deltas: 100% (359/359), done.$ ls
example-voting-app$ cd example-voting-app/$ docker stack deploy --compose-file docker-stack.yml vote
Creating network vote_default
Creating network vote_frontend
Creating network vote_backend
Creating service vote_visualizer
Creating service vote_redis
Creating service vote_db
Creating service vote_vote
Creating service vote_result
Creating service vote_worker
查看启动状态
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
bzdbgncx4aie vote_db replicated 1/1 postgres:9.4
midnvgi8pb25 vote_redis replicated 1/1 redis:alpine
fcyggosob44h vote_result replicated 1/1 dockersamples/examplevotingapp_result:before *:5001->80/tcp
ci0278kb2erd vote_visualizer replicated 1/1 dockersamples/visualizer:stable *:8080->8080/tcp
flh8ecex2q28 vote_vote replicated 2/2 dockersamples/examplevotingapp_vote:before *:5000->80/tcp
8f9kvakcrta8 vote_worker replicated 1/1 dockersamples/examplevotingapp_worker:latest
查看db数据的日志,发现出现密码错误
docker vervice logs vote_db
vote_db.1.zg0dbopxmklu@node1 | FATAL: password authentication failed for user "postgres"
vote_db.1.zg0dbopxmklu@node1 | DETAIL: Connection matched pg_hba.conf line 95: "host all all all md5
example-voting-app/docker-stack.yml
文件需要修改:
db:image: postgres:9.4environment:POSTGRES_USER: "postgres"POSTGRES_PASSWORD: "postgres"POSTGRES_HOST_AUTH_METHOD: "trust" # 存在问题,需要添加的字段volumes:- db-data:/var/lib/postgresql/data
重新启动,直接执行命令,自动更新
$ docker stack deploy --compose-file docker-stack.yml vote
Updating service vote_worker (id: 8f9kvakcrta8ml0ahbltbyrfu)
Updating service vote_visualizer (id: ci0278kb2erdm55y133pg85nj)
Updating service vote_redis (id: midnvgi8pb25o3oz3ptcawhhz)
Updating service vote_db (id: bzdbgncx4aieb0mgepgoxjl9s)
Updating service vote_vote (id: flh8ecex2q28gcifs53fg2odu)
Updating service vote_result (id: fcyggosob44hs0lzw1q8yzf3q)
Docker Swarm 练习:投票 App相关推荐
- Docker Compose 练习:投票 App
Docker Compose 经典示例: Example Voting App 示例投票App GitHub地址:https://github.com/dockersamples/example-vo ...
- Docker swarm - 使用体验 1+2
背景 凭借敏捷开发部署理念的推行,相信对于很多人来说docker这项容器技术已经并不陌生,Docker 1.12引擎发布了快两个月,新引擎中包含了许多特性.诸如: Swarm模式,容器集群的健康检查, ...
- Docker Swarm建立服务器集群
Docker Swarm建立服务器集群 一.Docker Swarm简介 1. 集群模式 2. 管理节点--Manager 二.Docker Swarm的配置及使用 三.Docker Service向 ...
- re.containerbase.startinternal 子容器启动失败_Python项目容器化实践(二) Docker Machine和Docker Swarm...
前言 这篇文章介绍Docker生态中的常被提到的Engine.Machine和Swarm,大家以了解为主,工作需要再深入. Engine Docker Engine其实就是我们常说的「Docker」, ...
- 如何使用Docker Swarm管理更多容器
by nolan grace 通过诺兰·格雷斯 如何使用Docker Swarm管理更多容器 (How to manage more containers with Docker Swarm) Sca ...
- 实例解读Docker Swarm
背景 回顾docker-compose vs docker stack差异: ① docker-compose是docker引擎之外的容器编排工具(Python实现),需要单独安装:docker st ...
- docker swarm实践爆心肝总结全在这里,火速收藏!!!
Docker Swarm 快速入门 "这是一个非常棒的docker swarm学习历程.我把一个国外的docker精简实践教学进行了简略的翻译,比起国内博客学习的总结性文章,它更注重让小白在 ...
- Docker Swarm 维护模式
Docker Swarm 维护模式 文章目录 Docker Swarm 维护模式 1. 创建集群 2. 部署服务 3. 开启维护模式 4. 关闭维护模式 1. 创建集群 第一台执行: $ docker ...
- Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes
19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...
- Docker Swarm 健康检查
Docker Swarm 健康检查 文章目录 Docker Swarm 健康检查 1. 容器添加健康检查 2. 崩溃命令 3. 验证状态 4. 状态修复 5. swarm 运用 Healthcheck ...
最新文章
- SQL 字符串分割表函数
- java mvc 案例_springmvc经典案例
- java实现时钟方法汇总
- 南通大学python期末考试试卷答案_南通大学2015-2016年1学期《软工》作业点评总结...
- javaweb项目得执行过程及servlet得请求(Httprequest)和响应(Httpresponse)
- Android系统性能优化(60)---LeakCanary使用详解
- kubernets 集群和本地环境联调环境打通工具kt-connect
- Centos 7安装Docker可视化管理面板安装中文Portainer
- 文件类型识别工具:TrID(trid)下载安装及使用
- 二阶带阻有源滤波器设计与仿真测试
- sqlserver while 用法
- 爬虫初探:弱水三千只取一瓢,房源三千全都想要
- HDUOJ_2567_寻梦
- 天空之镜?瑞士冰川?Nono,这里其实是新疆!
- 从win10体验到重装win8
- Java银行柜员业务绩效考核系统(含源码+论文+答辩PPT等)
- python教程之打包python源码上传的PyPI官网
- elastica安装
- 跳出“套路”泥沼,让在线教育回归本心
- 服务器渲染技术jsp
热门文章
- 排列熵(permutation entropy)
- c语言中常用英语词汇,C语言常见英语词汇
- c语言.jpg图片转成数组_Heic图片格式转换器
- MongoBD命令大全
- python多项式拟合_python中的多元(多项式)最佳拟合曲线?
- linux基本权限例子,Linux-3 文件权限-基本权限
- 20190707 - FE:使用 Charles 在 IphoneX 上抓包
- linux下删除一个环境变量,Linux 添加环境变量和删除环境变量
- 收藏!一文搞定工作中Git的使用实践和常用命令合集
- java mc和java jdk_JDK、JRE、JVM三者间的关系