Docker(二)-在Docker中部署Nginx实现负载均衡【完整教程】
一、前言
【查看完整视频教程(免费),请拉直文尾】
在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署。在本文中,我们将继续介绍利用Docker部署Nginx服务实现负载均衡。文章最后附有Nginx部署的视频全过程。
注:查看公众号历史文章,获知Asp.Net Core应用部署视频教程
二、环境
CentOS7, Docker-ce
三、Nginx服务部署
1.首先我们需要查找Nginx的镜像
docker search nginx
2.从镜像列表中选取其中一个,拉取到本地
docker pull nginx
-nginx: 镜像名称,如果需要特定版本可使用<imageName>:<tag>进行拉取
3.快速启动,在容器中加载镜像文件,并运行
docker run -d -it -p 8080:80 --name nginx8080 nginx
- -d: 后台运行
- -p 8080:80: 端口映射,<本地映射端口>:<容器端口>
- --name nginx8080: 容器名称,名称自定义
-nginx:在2中得到的镜像名称
4.查看Nginx所在容器的状态
docker ps
5.也可以通过浏览器或者使用命令查看Nginx服务
curl http://192.168.138.200:8080/
-192.168.138.200:8080: <本地IP>:<本地映射端口>
6.将容器中Nginx服务的配置文件及首页文件复制到本地
docker cp nginx8080:/etc/nginx ~/nginx
docker cp nginx8080:/usr/share/nginx/html ~/nginxwww
-nginx8080: Nginx服务容器名称
-/etc/nginx: Nginx服务配置文件存放目录
- ~/nginx: 本地配置文件存放目录,自定义
- /usr/share/nginx/html: Nginx服务html文件默认存放目录
- ~/nginxwww: 本地html文件存放目录,自定义
7.删除的当前Nginx服务,因为我们前面建立的这个Nginx服务是为了验证它能在Docker中运行,以及6中能将默认的配置文件复制到本地(偷懒的步骤)。现在目的都已经达到了,它也就完成自己的使命了。
docker stop nginx8080
docker rm nginx8080
--nginx8080: Nginx服务容器名称
8.将本地文件映射到容器中,再部署Nginx服务。把配置文件放在本地,这样就可以方便我们修改。
docker run -d -it -p 8080:80 --name nginx8080 -v ~/nginx:/etc/nginx -v ~/nginxwww:/usr/share/nginx/html --link=markjiang_dockerdemo:demo nginx
- -v ~/nginx:/etc/nginx: 将本地的配置文件所在目录映射到容器中
- -v ~/nginxwww:/usr/share/nginx/html: 将本地的首页文件映射到容器中
- --link=marijiang_dockerdemo:demo: link连接器,使得容器间可进行单向通信,即Nginx服务可使用别名demo访问容器markjiang_dockerdemo,格式<目标容器名称>:<别名>,别名在Nginx所在容器内部使用
9.查看容器状态
docker ps
10.修改本地配置文件nginx.conf
vi ~/nginx/nginx.conf
编辑nginx.conf文件,在http节点内添加以下内容,并保存
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api/ { proxy_pass http://demo/api/; } }
- listen 80: Nginx在容器中占用的端口
- location /: 因为我只想转发api的请求,首页文件直接使用Nginx服务自身的即可,因此特地声明一个路径
- location /api/: 将包含"/api/"的请求全部转发到真正的.Net服务中
-proxy_pass http://demo/api/: demo即为8中定义的别名
11.重启Nginx服务,读取最新的配置文件
docker restart nginx8080
-nginx8080: Nginx服务容器名称
12.在浏览器中查看或者使用命令向Nginx服务发出api请求
curl http://192.168.138.200:8080/api/values
13.新增一个Asp.Net Core应用,用于负载均衡
docker run -d -it -p 8091:80 --name markjiang_dockerdemo2 markjiang/dockerdemo
-markjiang/dockerdemo: 使用原有的镜像即可
14.修改本地配置文件nginx.conf
vi ~/nginx/nginx.conf
编辑nginx.conf文件,在server节点内修改以下内容,并保存
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api/ { proxy_pass http://apiserver/api/; } } upstream apiserver { server demo weight=1; server demo2 weight=1; }
- proxy_pass http://apiserver/api/: apiserver为服务器组名,自定义
- upstream apiserver: 定义服务器组
- weight=1: 负载均衡中该服务所占的权重,权重自定义
15.重建Nginx服务,添加新服务别名,读取最新的配置文件,实现负载均衡
docker stop nginx8080
docker rm nginx8080
docker run -d -it -p 8080:80 --name nginx8080 -v ~/nginx:/etc/nginx -v ~/nginxwww:/usr/share/nginx/html --link=markjiang_dockerdemo:demo --link=markjiang_dockerdemo2:demo2 nginx
16.关于.Net应用部署
在我的这个例子中,还是会将.Net应用的端口映射到本地端口中,可以让客户端直接调用,但在实际应用中,因为有了Nginx进行反向代理,我们的.Net应用就不需要把端口暴露出来,这样跟外界隔绝了会更加安全,因此我们在执行docker run命令时,只要将 -p 8090:80参数删掉就可以了。
以下视频,请带上耳机开始聆听
往期教程:
.NET开发框架(一)-框架介绍与视频演示
.NET开发框架(二)-框架功能简述
.NET开发框架(三)-高可用服务器端设计
.NET开发框架(四)-服务器IIS实践教程
.NET开发框架(五)-IIS上部署ASP.NET Core项目教程
.NET开发框架(六)-架构设计之IIS负载均衡(视频)
.NET开发框架(七)-技术栈学习目录
.NET开发框架(八)-服务器集群之网络负载平衡(视频)
.NET开发框架(九)-NLB网络负载平衡配置实战(视频)
Hyper-V + CentOS7 安装视频教程
Hyper-V + CentOS7 网络设置(视频教程)
Docker(一)-CentOS7中安装Docker视频教程
CentOS7 vsftp 安装与配置(视频教程)
.NET Core跨平台部署于Docker(Centos)- 视频教程
Ocelot - .Net Core开源网关
Ocelot(二)- 请求聚合与负载均衡
Ocelot(三)- 服务发现
Ocelot(四)- 认证与授权
Ocelot(五)- 流量限制、服务质量
Ocelot(六)- 架构图
Exceptionless - .Net Core开源日志框架
Exceptionless(二) - 使用进阶
你点的每一个"在看",
我都当成了喜欢!
Docker(二)-在Docker中部署Nginx实现负载均衡【完整教程】相关推荐
- 【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程
一.前言 在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署.在本文中,我们将继续介绍利用Docker部署Nginx服务实 ...
- Docker(二)-在Docker中部署Nginx实现负载均衡(视频)
一.前言 在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署.在本文中,我们将继续介绍利用Docker部署Nginx服务实 ...
- docker nginx 配置负载均衡
在上篇的文章中我们介绍了docker nginx配置简单的代理 在这篇文章我们介绍docker 利用nginx配置负载均衡 所谓的负载均衡是两台服务器,或者是多台服务器上面部署项目,但是访问的方式是通 ...
- consul-template + nginx部署高可用负载均衡
一.目标 1.Nginx实现负载均衡 2.consul-template动态维护Nginx里面的server 3.consul-template监控Consul集群 4.每个服务配置Consul做服务 ...
- 卸载nginx php mysql_centos7中配置nginx+php-fpm+swoole+mysql环境教程
centos7在数据中心服务器中使用较为广泛,为了方便用户配置环境,本文介绍了在centos7系统下部署nginx+php-fpm+swoole+mysql环境的详细步骤. 一.运行nginx 1.新 ...
- Nginx动态负载均衡与配置管理
背景 在Nginx集群有一定的规模时,比较让人头疼的问题有2个,一是如何在不reload nginx的情况下,动态更新后端rs,减少nginx reload的性能损耗,也能更好的对接到内部的部署平台: ...
- 架构师之路 — 部署架构 — 超大规模负载均衡架构演进
目录 文章目录 目录 超大规模负载均衡架构演进技术路线 0.单机架构 1.HTTP 与 DB 服务器分开部署 2.引入本地缓存和分布式缓存 3.引入反向代理实现负载均衡 4.数据库读写分离 5.数据库 ...
- Nginx 实战-负载均衡
一.负载均衡 今天学习一下Nginx的负载均衡.由于传统软件建构的局限性,加上一台服务器处理能里的有限性,在如今高并发.业务复杂的场景下很难达到咱们的要求.但是若将很多台这样的服务器通过某种方式组成一 ...
- nginx 之负载均衡 :PHP session 跨多台服务器配置
公司一个项目单点压力越来越大,考虑到稳定性和降压,使用nginx做负载均衡,将请求分发到多个docker上去,这里记录下PHP多服务器间的会话session共享问题,解决方案是把session单独存在 ...
最新文章
- mysql floor报错_mysql的floor()报错注入方法详细分析
- Vivadoz中Block Memory Generator v8.3的使用方法(二)
- spring cloud的eureka.client.service-url.defaultZone配置eureka集群的写法
- 硬件工程师面试经历2015---笔试篇
- 不同符号的两个整数求余和取模的计算技巧(规律)
- 无法远程到2008R2的解决方法
- 苹果通过电商渠道降价20天后,iPhone在中国销量猛增八成
- freqz()计算M点滑动平均滤波器的频率响应
- 完美解决Win8声卡爆音破音、卡顿
- 计算机关闭节能模式,bios怎么关闭cpu节能模式_bios节能模式怎么设置
- Docker下载Nginx镜像并运行Nginx容器
- linux centos 网易云音乐,Centos7.4安装网易云音乐教程
- CharSequence接口
- 苹果手机透明桌面_微信界面全局透明壁纸设置教程 苹果iOS与安卓手机弄法步骤...
- 我国最早着手建设专用计算机广域网的是,计算机网络信息技术在畜牧养殖方面应用...
- 9:参数校验-Java Spring
- 性格木讷面试时如何脱颖而出?
- Android 高仿微信实时聊天 基于百度云推送
- 【12月19日】传媒行业的股票排名
- Franka Emika Panda连接真实机械臂(一)
热门文章
- 谷歌相册_Google相册中的新存档功能是什么?
- 深入OKHttp源码分析(二)----OkHttp任务调度核心类Dispatcher解析
- 深入剖析阿里云推荐引擎——新架构,新体验
- .NET6之MiniAPI(十五):跨域CORS(下)
- Kubernetes + .NET Core 的落地实践
- WeihanLi.Npoi 1.21.0 Released
- 【荐】牛逼的WPF动画库:XamlFlair
- Win 11 真的要来了!微软宣布 Win10 将于 2025 年终止支持!
- ML.NET Cookbook:(17)如何在分类数据上训练模型?
- 记一次 .NET 某电商交易平台Web站 CPU爆高分析