zoukankan      html  css  js  c++  java
  • 企业——Docker compose的搭建

    一.什么是Docker compose?

      Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。 

      Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景

      docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。

    其它大部分指令都跟 docker run 中的类似。

      如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。
    使用Compose 基本上分为三步:1.Dockerfile 定义应用的运行环境  2.docker-compose.yml 定义组成应用的各服务  3.docker-compose up 启动整个应用

    二.Docker compose 的搭建

    1.将下载的二进制文件移到 /usr/local/bin/,并赋予执行权限

      mv  docker-compose-Linux-x86_64-1.22.0  /usr/local/bin/docker-compose
      chmod +x /usr/local/bin/docker-compose

    2.编写模板文件 docker-compose.yml

      mkdir -p /tmp/docker/compose
      cd /tmp/docker/compose
      vim docker-compose.yml
        web1:
          image: nginx
          expose:
            - 80
          volumes:
            - ./web1:/usr/share/nginx/html

        web2:
          image: nginx
          expose:
            - 80
          volumes:
            - ./web2:/usr/share/nginx/html
        haproxy:
          image: haproxy

          volumes:
            - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro

          links:
            - web1
            - web2
          ports:
            - "80:80"
          expose:
            - "80"

    3.编写测试用的测试页面

      pwd

        /tmp/docker/compose

      mkdir web1/web2

      echo web1 > web1/index.html
      echo web2 > web2/index.html

    4.用haproxy实现负载均衡

      pwd

        /tmp/docker/compose

      mkdir haproxy
      cd haproxy/
      vim haproxy.cfg      ##这个直接从官网复制下来就可以使用
        global
          log 127.0.0.1 local0
          log 127.0.0.1 local1 notice
        defaults
          log global
          mode http
          option httplog
          option dontlognull
          timeout connect 5000ms
          timeout client 50000ms
          timeout server 50000ms
          stats uri /status

        frontend balancer
          bind 0.0.0.0:80
          default_backend web_backends

        backend web_backends
          balance roundrobin  ##实现的是:轮训的效果
          server server1 web1:80 check
          server server2 web2:80 check

    5.导入镜像,并运行compose

      docker load -i nginx.tar
      docker load -i haproxy.tar

      cd -
        /tmp/docker/compose/haproxy
      docker-compose up -d
        Creating compose_web1_1 ... done
        Creating compose_web2_1 ... done
        Creating compose_haproxy_1 ... done
      docker-compose logs      ##可以查看日志记录
        Attaching to compose_haproxy_1, compose_web2_1, compose_web1_1
        haproxy_1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds

    6.进入浏览器进行测试  刷新会出现轮训的效果,而且会记录到log日志文件中

          

    7.想要删除相应的创建好的容器,需要先关闭,再删除

          

  • 相关阅读:
    第九章
    第十章
    第八章
    第七章
    第六章
    第五章
    第四章
    第三章
    第二章
    第一章
  • 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/10789538.html
Copyright © 2011-2022 走看看