我是靠谱客的博主 单纯鼠标,这篇文章主要介绍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 文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
建立目录 [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 文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[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

复制代码
1
2
3
4
5
6
7
8
9
在系统目录下 [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

这里写图片描述

复制代码
1
2
3
4
5
6
7
[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 的统计信息。
这里写图片描述

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

这里写图片描述

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

检测:

复制代码
1
2
3
4
5
6
7
8
9
10
停止一个进程,浏览器查看 [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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部