我是靠谱客的博主 单纯鼠标,最近开发中收集的这篇文章主要介绍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 恢复轮循

这里写图片描述

最后

以上就是单纯鼠标为你收集整理的Docker Compose的全部内容,希望文章能够帮你解决Docker Compose所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部