Docker----compose多容器管理

前言

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

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

Docker Compose 是一个用来创建和运行多容器应用的工具。使用 Compose 首先需要编写Compose 文件来描述多个容器服务以及之间的关联,然后通过命令根据配置启动所有的容器。

Dockerfile 可以定义一个容器,而一个 Compose 的模板文件(YAML 格式)可以定义一个包含多个相互关联容器的应用。Compose 项目使用 python 编写,基于后面的实验中我们将学习的 Docker API 实现。

实验目的:

使用docker compose管理nginx、haproxy镜像,实现nginx网页的高可用

一、自己下载docker compose的二进制文件移到 /usr/local/bin/,赋予执行权限[root@server1 ~]# ls
certs docker-compose-Linux-x86_64-1.24.1 game2048.tar rhel7.tar ubuntu.tar
[root@server1 ~]# mv docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/
[root@server1 bin]# mv docker-compose-Linux-x86_64-1.24.1 docker-compose
[root@server1 bin]# chmod +x docker-compose

在这里插入图片描述

2.编写docker-compose.yml
[root@server1 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.导入Nginx与Haproxy镜像
[root@server1 ~]# docker load -i haproxy.tar
917c0fc99b35: Loading layer 130.9MB/130.9MB
5f70bf18a086: Loading layer 1.024kB/1.024kB
c205bb11f213: Loading layer 4.684MB/4.684MB
ffef890bdf7b: Loading layer 9.549MB/9.549MB
3ec368642ee3: Loading layer 2.048kB/2.048kB
Loaded image: haproxy:latest

在这里插入图片描述

[root@server1 ~]# docker load -i nginx.tar
cf5b3c6798f7: Loading layer 58.45MB/58.45MB
da9fed87e1d3: Loading layer 54.59MB/54.59MB
0d1174230cc6: Loading layer 3.584kB/3.584kB
Loaded image: nginx:1.16

在这里插入图片描述
因为配置文件里镜像直接写的是nginx,所以要把它的标签改为nginx:latest
[root@server1 compose]# docker tag nginx:1.16 nginx:latest

3.编写测试用的测试页面
[root@server1 compose]# mkdir web1
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web1 > web1/index.html
[root@server1 compose]# echo web2 > web2/index.html

在这里插入图片描述
4.配置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 server1 web1:80 check
server server2 web2:80 check
~
在这里插入图片描述

5.开启docker-compose(值的注意的是:执行docker-compose命令时,所在目录下,必须有docker-compose.yml文件)
[root@server1 compose]# docker-compose up -d
Creating compose_web1_1 … done
Creating compose_web2_1 … done
Creating compose_haproxy_1 … done
[root@server1 compose]# docker-compose ps
Name Command State Ports

compose_haproxy_1 /docker-entrypoint.sh hapr … Exit 0
compose_web1_1 nginx -g daemon off; Up 80/tcp
compose_web2_1 nginx -g daemon off; Up 80/tcp

在这里插入图片描述

测试:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值