1. 服务含义

分布式应用中,应用的不同部分即称为“服务”,视频网站是一个分布式应用,包含有:数据的存储,视频的转码,前端展示等部分,对应的这些部分即称为相应的服务。docker平台中,定义、运行和扩展服务只需要编写'docker-compose.yml'文件即可完成。

2. docker-compose.yml

  1. version: ""
  2. services:
  3. web:
  4. image: timscm/get-started:part1
  5. deploy:
  6. replicas:
  7. restart_policy:
  8. condition: on-failure
  9. resources:
  10. limits:
  11. cpus: "0.1"
  12. memory: 50M
  13. ports:
  14. - "80:80"
  15. networks:
  16. - webnet
  17. networks:
  18. webnet:

解释:通过docker-compose.yml,可以启动一个新的分布式应用,启动的应用中将使用5个容器实例,可认为提供了5个服务,5个容器对外提供统一的访问地址,实现web应用的负载均衡。

3. 运行

  1. [root@VM_0_7_centos t]# docker stack deploy -c docker-compose.yml getstartedlab
  2. this node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again
  3. [root@VM_0_7_centos t]# docker swarm init
  4. Swarm initialized: current node (tmc0otz2vl76mhgrk9isrojwq) is now a manager.
  5.  
  6. To add a worker to this swarm, run the following command:
  7.  
  8. docker swarm join --token SWMTKN--00f7xsxxxxn1lnzl4fh5r71ggxxvvpnxxjbhhpfi xx.xx.xx.xx:port-xx
  9.  
  10. To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  11.  
  12. [root@VM_0_7_centos t]# docker stack deploy -c docker-compose.yml getstartedlab
  13. Creating network getstartedlab_webnet
  14. Creating service getstartedlab_web
  15. [root@VM_0_7_centos t]# docker ps
  16. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  17. 829561c83a3f timscm/get-started:part1 "python app.py" seconds ago Up seconds /tcp getstartedlab_web..t3ovke2vxbwsegcsb3vl6yhka
  18. 24f3e2202918 timscm/get-started:part1 "python app.py" seconds ago Up seconds /tcp getstartedlab_web..wtwv8sv5vy5h0y4l323mxnib9
  19. 68bd5b5e43c4 timscm/get-started:part1 "python app.py" seconds ago Up seconds /tcp getstartedlab_web..r9a7thbxyyfdcarjcv3ikckw3
  20. 97d5f75e4747 timscm/get-started:part1 "python app.py" seconds ago Up seconds /tcp getstartedlab_web..p2xmxat872mpm5kbs7l56kbjh
  21. c083970ea25b timscm/get-started:part1 "python app.py" seconds ago Up seconds /tcp getstartedlab_web..fm1fyut03xg02gl17lqc1xyln
  22. [root@VM_0_7_centos t]# curl http://localhost/
  23. <h3>Hello World!</h3><b>Hostname:</b> 24f3e2202918<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
  24. <h3>Hello World!</h3><b>Hostname:</b> 68bd5b5e43c4<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
  25. <h3>Hello World!</h3><b>Hostname:</b> 829561c83a3f<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
  26. <h3>Hello World!</h3><b>Hostname:</b> 97d5f75e4747<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
  27. <h3>Hello World!</h3><b>Hostname:</b> c083970ea25b<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
  28. <h3>Hello World!</h3><b>Hostname:</b> 24f3e2202918<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
  29. <h3>Hello World!</h3><b>Hostname:</b> 68bd5b5e43c4<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
  30. <h3>Hello World!</h3><b>Hostname:</b> 829561c83a3f<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]#

4. 其他关联

  1. [root@VM_0_7_centos t]# docker stack ls
  2. NAME SERVICES ORCHESTRATOR
  3. [root@VM_0_7_centos t]# docker stack deploy -c docker-compose.yml getstartedlab
  4. Creating network getstartedlab_webnet
  5. Creating service getstartedlab_web
  6. [root@VM_0_7_centos t]# docker stack ls
  7. NAME SERVICES ORCHESTRATOR
  8. getstartedlab Swarm
  9. [root@VM_0_7_centos t]# docker ps
  10. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  11. 75c49c1c7bbd timscm/get-started:part1 "python app.py" seconds ago Up second /tcp getstartedlab_web..wejacfpetviacfqb5f5w0njma
  12. ddd2880e62b2 timscm/get-started:part1 "python app.py" seconds ago Up seconds /tcp getstartedlab_web..wd0fou2dqwjsl1x170awqgq23
  13. 6fd24ce51a46 timscm/get-started:part1 "python app.py" seconds ago Up second /tcp getstartedlab_web..behnw0975n2gcdsa9e3ij4fzy
  14. f6022e0dcad1 timscm/get-started:part1 "python app.py" seconds ago Up second /tcp getstartedlab_web..mtoh61tvkpoz4iaksuo275r94
  15. 2714fb2f59ef timscm/get-started:part1 "python app.py" seconds ago Up seconds /tcp getstartedlab_web..dlgywjyo6xsitgjtec5hxef73
  16. [root@VM_0_7_centos t]# docker stack rm getstartedlab
  17. Removing service getstartedlab_web
  18. Removing network getstartedlab_webnet
  19. 这个操作,会自动 stop 掉容器,不需要单独调用 docker stop操作,有一定掉延迟。

[TimLinux] docker CentOS7入门——服务(2)的更多相关文章

  1. [TimLinux] docker CentOS7 入门——容器(1)

    1. 编写Dockerfile # 将官方 Python 运行时用作父镜像 FROM python: # 将工作目录设置为 /app WORKDIR /app # 将当前目录内容复制到位于 /app ...

  2. [TimLinux] docker CentOS7安装docker-ce最新版

    1. 环境 $ lsb_release -a # 需要安装 redhat-lsb-core 包 LSB Version: :core-4.1-amd64:core-4.1-noarch Distrib ...

  3. Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...

  4. 微服务 + Docker + Kubernetes 入门实践 目录

    微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...

  5. 【运维技术】VM虚拟机上使用centos7安装docker启动gogs服务教程【含B站视频教程】

    VM虚拟机上使用centos7安装docker启动gogs服务视频教程 BiliBili视频教程链接飞机票,点我 使用VMware Workstation安装Centos7 MinMal系统 第一步: ...

  6. Docker从入门到掉坑(四):上手k8s避坑指南

    在之前的几篇文章中,主要还是讲解了关于简单的docker容器该如何进行管理和操作,在接下来的这篇文章开始,我们将开始进入对于k8s模块的学习 不熟悉的可以先回顾之前的章节,Docker教程系列文章将归 ...

  7. [转帖]Docker从入门到动手实践

    Docker从入门到动手实践 https://www.cnblogs.com/nsky/p/10853194.html dockerfile的图很好呢. 但是自己没有做实验 , 其实知识都挺好. do ...

  8. docker-9 supervisord 参考docker从入门到实战

    参考docker从入门到实战 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机 ...

  9. Docker快速入门

    Docker已经火了很长一段时间,最近打算在阿里云上好好熟悉一下Docker的相关应用,为今后的工作做准备. 基本概念 Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是do ...

随机推荐

  1. one of neural network

    map source:https://github.com/microsoft/ai-edu Fundamental Principle inputs: characteristic value th ...

  2. 语义分割学习之SegNet的C++编译

    Abstract 安装好Segnet并使用Python进行训练和测试之后,考虑项目的应用,需要在C++的工程环境下进行继续开发,所以这里的主要内容是用C++建立工程,使用相应的数据集和权重参数文件进行 ...

  3. nyoj 412 Same binary weight ()

    Same binary weight 时间限制:300 ms  |  内存限制:65535 KB 难度:3   描述 The binary weight of a positive  integer ...

  4. set map symbol

    set 声明 let set = new Set();即创建了一个空的set 赋值 let set = new Set(['张三','李四','王五']); 特性 似于数组,但它的一大特性就是所有元素 ...

  5. python三种格式化输出

    name = '张三'age = 22job = Engineersalary = 99999999 info1 = ''' ---------- info1 of %s ---------- nam ...

  6. 百度下载给的termux是个坑

    termux有两个版本,0.32以及0.64.百度提供0.32的下载,太坑爹.谷歌则是0.64的下载.32版uname -m识别为armv8l,绝对影响你进行其它linux的部署.通过atilo脚本会 ...

  7. JVM的内存回收机制

    垃圾回收机制,简称gc.对堆与方法区的对象进行回收,因为java不像c需要编程人员手动clear,虚拟机通过垃圾回收算法,对堆与方法区的对象进行自动回收处理. 1.引用计数法(jvm没有采用,因为当两 ...

  8. 剑指Offer-25.复杂链表的复制(C++/Java)

    题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否则 ...

  9. sqlalchemy 源码分析之create_engine引擎的创建

    引擎是sqlalchemy的核心,不管是 sql core 还是orm的使用都需要依赖引擎的创建,为此我们研究下,引擎是如何创建的. from sqlalchemy import create_eng ...

  10. css居中布局的几种方式

    一.水平居中 若是行内元素,则直接给其父元素设置text-align: center即可 若是块级元素,则直接给该元素设置margin: 0 auto即可 若子元素包含浮动元素,则给父元素设置widt ...