Docker Compose

Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器
(contaienr)。Docker Compose 运行的目录下的所有文件(docker-compose.yml, extends 文
件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当
中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包
括多个容器实例,Docker Compose 并没有解决负载均衡的问题,因此需要借助其他工具实
现服务发现及负载均衡。
这里写图片描述
Docker Compose 是一个用来创建和运行多容器应用的工具。使用 Compose 首先需要编写
Compose 文件来描述多个容器服务以及之间的关联,然后通过命令根据配置启动所有的容
器。
Dockerfile 可以定义一个容器,而一个 Compose 的模板文件(YAML 格式)可以定义一个
包含多个相互关联容器的应用。

实验:

注:rhel:v1为前一篇博客Dockerfile创建的Web服务应用镜像

1、编写 docker-compose.yml 文件

建立目录
[root@foundation10 ~]# cd /tmp/docker/
[root@foundation10 docker]# mkdir compose
[root@foundation10 docker]# cd compose/
这个是 Compose 使用的主模板文件。指定 2个 web 容器,以及 1 个 haproxy 容器。
[root@foundation10 compose]# vim docker-compose.yml
apache:
    image: rhel7:v1
    expose:         ##暴露端口,但不映射到宿主机,只被连接的服务访问。仅可以指定内部端口为参数
        - 80
    volumes:        ##卷挂载路径设置。可以设置宿主机路径
        - ./web:/var/www/html

nginx:
    image: nginx
    expose:
        - 80

haproxy:
    image: haproxy
    volumes:
        - ./haproxy:/usr/local/etc/haproxy
    links:            ## 链接到其它服务中的容器
        - apache
        - nginx
    ports:            ## 暴露端口信息
        - "8080:80"
    expose:
        - 80

2、编辑haproxy.cfg 文件

[root@foundation10 compose]# cd ..
复制web目录到compose目录,web目录有默认发布内容index.html
[root@foundation10 docker]# cp -r web/ compose/ 
[root@foundation10 docker]# cd compose/
compose目录下新建haproxy目录
[root@foundation10 compose]# mkdir haproxy
[root@foundation10 compose]# cd haproxy/
在其中生成一个 haproxy.cfg 文件,内容为
[root@foundation10 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          ##轮循机制:让web1和web2实现负载均衡
    server web1 apache:80 check
    server web2 nginx:80 check

这里写图片描述
3、使用docker-compose

在系统目录下
[root@foundation10 haproxy]# cd /usr/local/bin/
get docker-compose-Linux-x86_64-1.22.0
给予可写权限 
[root@foundation10 bin]# chmod +x docker-compose-Linux-x86_64-1.22.0 
做软连接
[root@foundation10 bin]# ln -s docker-compose-Linux-x86_64-1.22.0 docker-compose
查看软链接
[root@foundation10 bin]# ll

这里写图片描述

[root@foundation10 bin]# cd /tmp/docker/compose/
[root@foundation10 compose]# ls
docker-compose.yml  haproxy  web
在该目录下执行 docker-compose up 命令,会整合输出所有容器的输出。并且退出时,所有容器将会停
止。
创建并启动容器
[root@foundation10 compose]# docker-compose up

这里写图片描述
此时访问对外暴露的8080 端口,会经过 haproxy 自动转发到后端的某个 web 容器上,刷新页
面,可以观察到访问的容器地址的变化。
浏览器访问172.25.254.10:8080 轮循
浏览器访问172.25.254.10:8080/status
这里写图片描述
这里写图片描述
访问/status 可以查看到 haproxy 的统计信息。
这里写图片描述

ctrl+c结束
结束之后可在后台查看有3个进程
[root@foundation10 compose]# docker ps
[root@foundation10 compose]# docker ps -a

这里写图片描述

再次打开便可以看到容器恢复
[root@foundation10 compose]# docker-compose start
[root@foundation10 compose]# docker ps

检测:

停止一个进程,浏览器查看
[root@foundation10 compose]# docker stop compose_apache_1 
查看进程
[root@foundation10 compose]# docker ps
此时浏览器访问172.25.254.10:8080 不发生轮循,只有Nginx的默认访问页面
再重新开启
[root@foundation10 compose]# docker start compose_apache_1 
查看进程恢复
[root@foundation10 compose]# docker ps
浏览器访问172.25.254.10:8080 恢复轮循

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值