zoukankan      html  css  js  c++  java
  • Docker 入门(Mac环境)- part 3 服务(services)

    part-3 服务(services)

    简介

    一个应用的规模的扩大是很常见的事情,会经常用到负载均衡这些,如要实现这些功能,我们就会用到docker中更高一层的东西-service(服务)。

    比如说一个视频分享网站,包括存储的部分,前端展示的部分,这些不同的部分就可以称之为服务。定义/运行/管理成规模的应用在docker中很容易实现,通过一个docker-compose.yml文件就可以了。

    docker-compose.yml文件

    创建一个docker-compose.yml文件,内容是:

    version: "3"
    services:
      web:
        # replace username/repo:tag with your name and image details
        image: username/repo:tag
        deploy:
          replicas: 5
          resources:
            limits:
              cpus: "0.1"
              memory: 50M
          restart_policy:
            condition: on-failure
        ports:
          - "4000:80"
        networks:
          - webnet
    networks:
      webnet:
    

    配置文件的各项指标的含义:把这个服务称之为“web”,版本是3,5个拷贝,每个用cpu不超过10%,内存不超过50M,失败了就重启,端口映射是4000到80,通过webnet实现负载均衡。

    app启动

    • 在用docker stack deploy之前可以使用docker swarm init来初始化一下,然后通过docker stack deploy -c docker-compose.yml getstartedlab来启动,可以通过docker service ls查看进程,效果如下:
    ➜  docker_file docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE                     PORTS
    k0315l4qcvdo        getstartedlab_web   replicated          5/5                 wang/get-started:part-2   *:4000->80/tcp
    
    • 通过docker service ps getstartedlab_web可以查详细进程
    ➜  docker_file docker service ps getstartedlab_web
    ID                  NAME                  IMAGE                     NODE                    DESIRED STATE       CURRENT STATE           ERROR               PORTS
    s9ygrgj69gxp        getstartedlab_web.1   wang/get-started:part-2   linuxkit-025000000001   Running             Running 2 minutes ago
    xy1ot8kxyqac        getstartedlab_web.2   wang/get-started:part-2   linuxkit-025000000001   Running             Running 2 minutes ago
    r7x6c9rpf1dg        getstartedlab_web.3   wang/get-started:part-2   linuxkit-025000000001   Running             Running 2 minutes ago
    ogx1pyedra2e        getstartedlab_web.4   wang/get-started:part-2   linuxkit-025000000001   Running             Running 2 minutes ago
    63a32pzagsr2        getstartedlab_web.5   wang/get-started:part-2   linuxkit-025000000001   Running             Running 2 minutes ago
    
    • 查看container
    ➜  docker_file docker container ls -q
    596ea073ac78
    5059346a8474
    bde0a1787a38
    9c6e956b3d05
    d450035e17b8
    
    • 查看多个拷贝(负载均衡)运行的效果,用了下面命令后然后浏览器刷新几次页面,会发现有hostname的变化
    ➜  docker_file curl -4 http://localhost:4000
    <h3>Hello World!</h3><b>Hostname:</b> bde0a1787a38<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>%
    

    参数调整

    • 调整yml后可以通过docker stack deploy -c docker-compose.yml getstartedlab来更新

    关闭应用和swarm

    • docker stack rm getstartedlab
    • 离开swarm, docker swarm leave --force
    • 这里的感觉就是swarm相当于一个基础环境,类似于virtualenv这种概念
  • 相关阅读:
    编程之美 2014资格赛 格格取数
    ios游戏开发--cocos2d学习(1)
    ios开发中常用的也是最基本的mysql语句
    无限树形结构的数据库表设计
    认真的辞职
    几种JavaScript富应用MVC MVVM框架
    javascript创建对象和属性的几种方式
    webresource.axd文件的配置及使用
    ITextSharp用来生成 PDF 的一个组件
    flexpaper 开源轻量级的在浏览器上显示各种文档的组件
  • 原文地址:https://www.cnblogs.com/wswang/p/9288095.html
Copyright © 2011-2022 走看看