docker-copmose的部署,以及实现负载均衡+监控

本文介绍了Docker-Compose的基本概念,如项目、服务和容器的层级结构,并指出Docker-Compose不自带负载均衡解决方案。为了实现负载均衡,文章详细讲解了如何结合haproxy进行部署,并提供了测试负载均衡的步骤。最后提到了如何关闭docker-compose。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.docker-compose简介
  • Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

  • Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。

  • Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。

  • Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

  • Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML
    格式)来定义一组相关联的应用容器为一个项目(project)。

  • Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

2.部署docker-compose
[root@base1 ~]# ls
docker-engine-1.13.1-1.el7.centos.x86_64.rpm  
docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm
[root@base1 ~]# yum install -y docker-engine-*
[root@base1 ~]# ls
docker-compose-Linux-x86_64-1.22.0     # 这是docker-compose的二进制文件,我们可以直接使用
haproxy.tar                          
ubuntu.tar
docker-engine-1.13.1-1.el7.centos.x86_64.rpm          
lxcfs-2.0.5-3.el7.centos.x86_64.rpm
docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm  
nginx.tar
[root@base1 ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
[root@base1 ~]# chmod +x /usr/local/bin/docker-compose
[root@base1 ~]# cd /tmp/
[root@base1 tmp]# mkdir docker 
[root@base1 tmp]# cd docker/
[root@base1 docker]# mkdir compose
[root@base1 docker]# cd compose/
[root@base1 compose]# vim docker-compose.yml
web1:
    image: nginx
    expose:
            - 80
    volumes:
            - ./web1:/usr/share/nginx/html
web2:
    image: nginx
    expose:
            - 80
    volumes:
            - ./web1:/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"       # 对外暴露端口为80

在这里插入图片描述

[root@base1 compose]# mkdir web1
[root@base1 compose]# mkdir web2
[root@base1 compose]# echo web1 > web1/index.html    # 修改默认发布目录,方便测试
[root@base1 compose]# echo web2 > web2/index.html
docker-compose借助haproxy实现负载均衡
[root@base1 compose]# mkdir haproxy
[root@base1 compose]# cd haproxy/
[root@base1 haproxy]# vim haproxy.cfg   # Haproxy 的配置文件
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 base1 web1:80 check
	server base2 web2:80 check

在这里插入图片描述

[root@base1 haproxy]# cd
[root@base1 ~]# docker load -i nginx.tar
[root@base1 ~]# docker load -i haproxy.tar 
[root@base1 ~]# cd -
/tmp/docker/compose/haproxy
[root@base1 haproxy]# cd ..
[root@base1 compose]# docker-compose up -d    # 自动启动所有的容器

在这里插入图片描述

测试负载均衡:
[root@foundation78 ~]# for i in {1..5};do curl 172.25.78.11;done

在这里插入图片描述
在这里插入图片描述

关闭docker-compose
[root@base1 compose]# docker-compose stop  # 必须先关闭,才可以删除

在这里插入图片描述

[root@base1 compose]# docker-compose rm

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值