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. egret常用功能

    egret常用功能<pre>//////////////////////////////////////////////////////////////////////////////// ...

  2. ASP.NET Core 1.0: 指定Static File中的文件作为default page

    指定一个网站的default page是很容易的事情.譬如IIS Management中,可以通过default page来指定,而默认的index.html, index.htm之类,则早已经被设置 ...

  3. [Error]Archive for required library: 'C:/Users/fk/.m2/repository/com/sun/xml/bind/jaxb-core/2.2.7/jaxb-core-2.2.7.jar'

    Eclipse报错: Description Resource Path Location Type Archive for required library: 'C:/Users/fk/.m2/re ...

  4. HTML中的表格标签

      表格是网页制作中使用最多的工具之一,在制作网页时,使用表格可以更清晰地排列数据.但是在实际制作过程中,表格更多用在网页布局的定位上.很多网页都是以表格布局的.这是因为表格在文本和图像的位置控制方面 ...

  5. Arduino 将 String 转化为 int

    Arduino 将 String 转化为 int 函数:toInt() 实例: String my_str = "; int my_int = my_str.toInt();

  6. ESP8266 使用AT指令

    ESP8266 使用AT指令 问题:串口调试工具输入AT指令没返回结果 分析板子有两种模式 下载模式(默认) 运行模式 解决办法: 方法一:按下板子上的 RST 键位 方法二:使用 [安信可串口调试工 ...

  7. nyoj 168-房间安排 (贪心)

    168-房间安排 内存限制:64MB 时间限制:3000ms 特判: No 通过数:33 提交数:71 难度:2 题目描述: 2010年上海世界博览会(Expo2010),是第41届世界博览会.于20 ...

  8. iOS UIView x Android View

  9. ACL2019: 《GraphRel: Modeling Text as Relational Graphs for Joint Entity and Relation Extraction》源码解析

    论文地址:<GraphRel: Modeling Text as Relational Graphs for Joint Entity and Relation Extraction> G ...

  10. 基于Vue的日历组件

    可以标注重要日子 自己写的,可能不是特别很好,大家多提意见!!! 地址:https://github.com/jsLWQ/calendar