经典示例: 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相关推荐

  1. Docker Compose 练习:投票 App

    Docker Compose 经典示例: Example Voting App 示例投票App GitHub地址:https://github.com/dockersamples/example-vo ...

  2. Docker swarm - 使用体验 1+2

    背景 凭借敏捷开发部署理念的推行,相信对于很多人来说docker这项容器技术已经并不陌生,Docker 1.12引擎发布了快两个月,新引擎中包含了许多特性.诸如: Swarm模式,容器集群的健康检查, ...

  3. Docker Swarm建立服务器集群

    Docker Swarm建立服务器集群 一.Docker Swarm简介 1. 集群模式 2. 管理节点--Manager 二.Docker Swarm的配置及使用 三.Docker Service向 ...

  4. re.containerbase.startinternal 子容器启动失败_Python项目容器化实践(二) Docker Machine和Docker Swarm...

    前言 这篇文章介绍Docker生态中的常被提到的Engine.Machine和Swarm,大家以了解为主,工作需要再深入. Engine Docker Engine其实就是我们常说的「Docker」, ...

  5. 如何使用Docker Swarm管理更多容器

    by nolan grace 通过诺兰·格雷斯 如何使用Docker Swarm管理更多容器 (How to manage more containers with Docker Swarm) Sca ...

  6. 实例解读Docker Swarm

    背景 回顾docker-compose vs docker stack差异: ① docker-compose是docker引擎之外的容器编排工具(Python实现),需要单独安装:docker st ...

  7. docker swarm实践爆心肝总结全在这里,火速收藏!!!

    Docker Swarm 快速入门 "这是一个非常棒的docker swarm学习历程.我把一个国外的docker精简实践教学进行了简略的翻译,比起国内博客学习的总结性文章,它更注重让小白在 ...

  8. Docker Swarm 维护模式

    Docker Swarm 维护模式 文章目录 Docker Swarm 维护模式 1. 创建集群 2. 部署服务 3. 开启维护模式 4. 关闭维护模式 1. 创建集群 第一台执行: $ docker ...

  9. Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes

    19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...

  10. Docker Swarm 健康检查

    Docker Swarm 健康检查 文章目录 Docker Swarm 健康检查 1. 容器添加健康检查 2. 崩溃命令 3. 验证状态 4. 状态修复 5. swarm 运用 Healthcheck ...

最新文章

  1. SQL 字符串分割表函数
  2. java mvc 案例_springmvc经典案例
  3. java实现时钟方法汇总
  4. 南通大学python期末考试试卷答案_南通大学2015-2016年1学期《软工》作业点评总结...
  5. javaweb项目得执行过程及servlet得请求(Httprequest)和响应(Httpresponse)
  6. Android系统性能优化(60)---LeakCanary使用详解
  7. kubernets 集群和本地环境联调环境打通工具kt-connect
  8. Centos 7安装Docker可视化管理面板安装中文Portainer
  9. 文件类型识别工具:TrID(trid)下载安装及使用
  10. 二阶带阻有源滤波器设计与仿真测试
  11. sqlserver while 用法
  12. 爬虫初探:弱水三千只取一瓢,房源三千全都想要
  13. HDUOJ_2567_寻梦
  14. 天空之镜?瑞士冰川?Nono,这里其实是新疆!
  15. 从win10体验到重装win8
  16. Java银行柜员业务绩效考核系统(含源码+论文+答辩PPT等)
  17. python教程之打包python源码上传的PyPI官网
  18. elastica安装
  19. 跳出“套路”泥沼,让在线教育回归本心
  20. 服务器渲染技术jsp

热门文章

  1. 排列熵(permutation entropy)
  2. c语言中常用英语词汇,C语言常见英语词汇
  3. c语言.jpg图片转成数组_Heic图片格式转换器
  4. MongoBD命令大全
  5. python多项式拟合_python中的多元(多项式)最佳拟合曲线?
  6. linux基本权限例子,Linux-3 文件权限-基本权限
  7. 20190707 - FE:使用 Charles 在 IphoneX 上抓包
  8. linux下删除一个环境变量,Linux 添加环境变量和删除环境变量
  9. 收藏!一文搞定工作中Git的使用实践和常用命令合集
  10. java mc和java jdk_JDK、JRE、JVM三者间的关系