Compose简介:

Compose是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose,不再需要使用shell脚本来启动容器。
Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用。
docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过image 指令指定镜像或 build指令(需要Dockerfile)来自动构建镜像。
1
2
3
1.下载并安装docker-compose

安装包:(二进制文件)

docker-compose-Linux-x86_64-1.22.0
1
#1.下载
[root@server1 ~]# ls
docker-compose-Linux-x86_64-1.22.0
#2.拷贝二进制文件
[root@server1 ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
#3.添加权限
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose
1
2
3
4
5
6
7
2.创建目录

[root@server1 ~]# cd /tmp/
[root@server1 tmp]# mkdir docker
[root@server1 tmp]# ls
docker
[root@server1 tmp]# cd docker/
[root@server1 docker]# pwd
/tmp/docker
[root@server1 docker]# mkdir compose
[root@server1 docker]# cd compose/
[root@server1 compose]# ls
1
2
3
4
5
6
7
8
9
10
3.编写compose文件

[root@server1 compose]# vim docker-compose.yml
#######################
web1: #容器名称
image: nginx #镜像名称
expose: #对外暴露端口
- 80
volumes: #挂载卷
- ./web1:/usr/share/nginx/html #将当前目录下的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"
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

4.编写发布文件

[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
1
2
3
4
5.编写haproxy文件

haproy:提供负载均衡
1
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# ls
[root@server1 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 #轮询算法;check表示健康检查
server server1 web1:80 check
server server2 web2:80 check
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

[root@server1 haproxy]# ls
haproxy.cfg
[root@server1 haproxy]# cd ..
[root@server1 compose]# ls
docker-compose.yml haproxy web1 web2
1
2
3
4
5
6.下载并导入镜像

镜像:

nginx.tar
ubuntu.tar
1
2
#1.下载镜像
[root@server1 ~]# ls
nginx.tar ubuntu.tar
#2.导入镜像
[root@server1 ~]# docker load -i nginx.tar
[root@server1 ~]# docker load -i haproxy.tar
#3.查看年镜像
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 881bd08c0b08 2 weeks ago 109MB
haproxy latest fbd1f55f79b3 3 years ago 139MB
1
2
3
4
5
6
7
8
9
10
11
7.启动compose

[root@server1 ~]# cd /tmp/docker/compose
#启动;注意必须在此路径下才能执行
[root@server1 compose]# docker-compose up -d
1
2
3

#查看日志
[root@server1 compose]# docker-compose logs
Attaching to compose_haproxy_1, compose_web1_1, compose_web2_1
haproxy_1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds
1
2
3
4
测试:

输入: http://172.25.66.1/status 发现可以实现健康检查
1

输入:http://172.25.66.1/ 刷新网页,发现可以实现轮询
1

管理compose:

#必须先关闭才能删除
[root@server1 haproxy]# docker-compose stop
[root@server1 haproxy]# docker-compose rm
1
2
3

#下次想再使用,只需再开启即可
[root@server1 haproxy]# docker-compose up -d
1
2

————————————————
版权声明:本文为CSDN博主「奋斗吧,青年!」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lilygg/article/details/88760613

Docker Compose 部署Nginx服务实现负载均衡的更多相关文章

  1. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  2. docker - compose 部署 Nginx

    主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...

  3. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  4. 【Nginx】Windows平台下配置Nginx服务实现负载均衡

    前言:废话不多说了,直接上步骤. 系统环境:win10 测试用的开发环境和服务类型:VS2022 + DotNet 6 + WebApi 1.本地先创建一个webapi项目,用于测试使用. 2.新建一 ...

  5. Nginx服务器之负载均衡策略(6种)

    一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器.详情请查看我的另一篇博客. 二.Ng ...

  6. Docker打包部署前端项目与负载均衡

    设置淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org //在home/fn1 home/fn2放入项目和nginx ...

  7. Nginx服务器之负载均衡策略

    http://www.cnblogs.com/1214804270hacker/p/9325150.html

  8. Docker(二)-在Docker中部署Nginx实现负载均衡(视频教程)

    本教程介绍利用Docker部署Nginx服务实现负载均衡. (双击全屏播放)

  9. 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务

    场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序 ...

随机推荐

  1. P5325 【模板】Min_25筛

    题意:定义积性函数f(x)f(x)f(x),且f(p^k)=p^k*(p^k−1)   (p是一个质数),求f(1)+f(2)+...f(n); 思路:板子题.重新打了一份装起来. /* 定义积性函数 ...

  2. http 和 https(通俗原理了解)

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...

  3. 【Android Studio】 资源下载

    Gradle各版本集合 http://services.gradle.org/distributions/ Android Studio各版本集合 http://www.android-studio. ...

  4. the_permalink()和get_permalink()的区别

    wordpress中the_permalink()是用于posts loop循环中(判断是否有文章,如果有文章则展示出来:如果没有文章就显示没有文章),常用于文章分类列表和文章页的模板中,用法如下 & ...

  5. Pychram中使用reduce()函数报错:Unresolved reference 'reduce'

    python3不能直接使用reduce()函数,因为reduce() 函数已经被从全局名字空间里移除了,它现在被放置在fucntools 模块里,所以要使用reduce函数得先饮用fucntools ...

  6. Predicate Format String Syntax 与字面量

    字面量: 字符串:单引号或双引号扩起来: %@:系统自动添加,数字则自动去除@(): 无单双引号,系统做数字处理. Single or double quoting variables (or sub ...

  7. Redux的图文模型

    Also these are really nice (from http://slides.com/jenyaterpil/redux-from-twitter-hype-to-production ...

  8. Redis 迁移 DB; move key db

    redis 移动 DB MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中.如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存 ...

  9. 关于golang-mod的使用方法

    简单粗暴仅需要三步即可 $ go mod download $ go mod tidy $ go build -v 这里保持默认什么都不用添加,项目无需在 gopath里面 Vendoring mod ...

  10. R 目录及文件操作

    获取当前路径  getwd() 切换当前路径  setwd() 返回上一级目录  setwd(dirname(getwd())) 获取文件所在路径  dirname() 查看当前目录的子目录  lis ...