如何使用Docker Compose实现nginx负载均衡
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关如何使用Docker Compose实现nginx负载均衡,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。以Docker的网络管理,容器的
千家信息网最后更新 2025年12月02日如何使用Docker Compose实现nginx负载均衡
这篇文章将为大家详细讲解有关如何使用Docker Compose实现nginx负载均衡,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
以Docker的网络管理,容器的IP设置为基础知识实现Nginx负载均衡
查看所有docker网络
docker network ls/*NETWORK ID NAME DRIVER SCOPEb832b168ca9a bridge bridge local373be82d3a6a composetest_default bridge locala360425082c4 host host local154f600f0e90 none null local*/// composetest_default 是上一篇介绍Compose时,docker-compose.yml文件所在的目录名,// 所以,用docker-compose创建的容器会默认创建一个以目录名为网络名的网络,并且是dridge(桥接)类型
指定容器IP地址
官网文档地址:https://docs.docker.com/compose/compose-file/#ipv4_address-ipv6_address
继续编写上一篇《12.使用Docker Compose容器编排工具》文章中的docker-compose.yml
version: "3"services: web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: 192.169.0.3 web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: 192.169.0.2networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16
使用docker-compose启动容器
docker-compose up -d
查看容器是否启动,并确认是否创建了网络 nginx-lsb
// 可以查看当前docker-compose.yml配置的容器组里的容器状态docker-compose psdocker network ls/*NETWORK ID NAME DRIVER SCOPEb832b168ca9a bridge bridge local373be82d3a6a composetest_default bridge localde6f5b8df1c8 composetest_nginx-lsb bridge locala360425082c4 host host local154f600f0e90 none null local*/// 创建了nginx-lsb网络,命名是容器组项目的 文件名开头_网络名
查看网络 nginx-lsb的详情
docker network inspect composetest_nginx-lsb// 详情里面可以看到使用这个网络的每个容器的ip如:/*... "Containers": { "039aa860ef04f20a7566fdc943fb4398a61d2ad6dd3e373b17c86ac778af89e3": { "Name": "web2", "EndpointID": "1bc206661179e65999015f132c2889d3d4365b8d42b8a89cf9c260016fedd5ee", "MacAddress": "02:42:c0:a9:00:02", "IPv4Address": "192.169.0.2/16", "IPv6Address": "" }, "437ad7a07da8e46c0abaf845c4b08425338009fbe972bde69478cf47c75c315b": { "Name": "web1", "EndpointID": "5a36e602a5364ee9ad06e9816d09e3966d56ebf06b9394ebc25b8bcee9546607", "MacAddress": "02:42:c0:a9:00:03", "IPv4Address": "192.169.0.3/16", "IPv6Address": "" } },...*/使用 env_file环境文件:
简单可以理解为:在docker-compose.yml中定义变量,引用在外部.env文件中进行变量定义
官方文档地址:https://docs.docker.com/compose/compose-file/#env_file
// 还是在composetest目录中定义个 .env文件,用来存放变量web1_addr=192.169.0.2web2_addr=192.169.0.3// 修改docker-compose.yml文件,加入变量定义version: "3"services: web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web1_addr} web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web2_addr}networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16重新启动composetest项目,并查看网络详情,确认容器ip是否设置成功
// 重新启动composetest项目docker-compose up -d// 查看网络详情docker network inspect composetest_nginx-lsb
在composetest项目中添加一台nginx服务器作为负载均衡服务器
// 在.env文件里添加一个变量 nginx_lsbweb1_addr=192.169.0.2web2_addr=192.169.0.3nginx_lsb=192.169.0.100// 修改docker-compose.yml文件,加入变量定义version: "3"services: nginx-lsb: container_name: nginx-lsb image: "centos:nginx" ports: - "8000:80" privileged: true volumes: - "/app/nginx/nginx.conf:/etc/nginx/nginx.conf" networks: nginx-lsb: ipv4_address: ${nginx_lsb} web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web1_addr} web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web2_addr}networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16// 重新启动composetest项目docker-compose up -d修改nginx.conf配置文件,配置负载均衡
upstream mydocker { server 192.169.0.2; server 192.169.0.3;}server { listen 80; server_name mydocker; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering off; proxy_pass http://mydocker; }}重新启动nginx-lsb,加载配置文件
docker-composer restart nginx-lsb
访问 http://服务器IP地址:8000,测试服务器负载均衡!
关于"如何使用Docker Compose实现nginx负载均衡"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
容器
网络
文件
均衡
变量
项目
地址
服务器
详情
服务
配置
目录
篇文章
文档
文章
更多
知识
上一
不错
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
切实增强网络安全工作的
山西中小学生网络安全教育平台
网络空间秩序保障网络安全的
新华社 多媒体 数据库李凯
方舟集团简介软件开发
软件开发工程师需要背代码吗
附近人软件开发
淮北oa管理软件开发定制公司
计算机网络安全的首选书
上海crm软件开发平台
红河新华互联网科技有限公司
香港的科技互联网
tbc怀旧服狂野之刃服务器
大学数据库考试试题
黎明杀机那个服务器延迟低
北京中正软件开发有限
win10搭建服务器
专科生学网络安全
部队网络安全短信
软件开发管理遇到困惑
未来教育数据库技术操作题
网络安全规划2021
广州触网软件开发公司
专科读软件开发
安卓软件开发好学吗
EBC外文电子书数据库
服务器环境温度40
英雄联盟全球服务器
软件开发学数学吗
手机软件开发 数据库