【全】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参数删掉就可以了。

以下视频,请带上耳机开始聆听

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P2012 拯救世界2(指数型生成函数)

P2012 拯救世界2 三种基因&#xff0c;我们分别列出其生成函数&#xff1a; F(x)∑n≥0xnn!exG(x)∑n≥0x2n1(2n1)!12(∑n≥0xnn!−∑n≥0(−1)nxnn!)12(ex−e−x)H(x)∑n≥0x2n(2n)!12(∑n≥0xnn!∑n≥0(−1)nxnn!)12(exe−x)F(x) \sum_{n \geq 0} \frac{x ^ n}{n!} e ^ x\…

开源导入导出通用库Magicodes.ExporterAndImporter发布

导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库&#xff0c;并且仍在跟随项目不断地打磨。GitHub地址&#xff1a;https://github.com/xin-lai/Magicodes.ExporterAndImporter目录特点相关官方Nuget包导出 Demo普通导出特性导出列头处理或者多语…

第一个错误的版本

题目描述 你是产品经理&#xff0c;目前正在带领一个团队开发新的产品。不幸的是&#xff0c;你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的&#xff0c;所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, …, n]&#xff0c;你…

P4705 玩游戏(生成函数,多项式ln)

P4705 玩游戏 有ansk∑i1n∑j1m(aibj)knm先舍弃nm不管ansk∑r0k∑i1n∑j1mCkrairbjk−r∑r0k∑i1n∑j1mk!r!(k−r)!airbjk−rk!∑r0k(1r!∑i1nair)(1(k−r)!∑j1mbjk−r)不难发现这就是一个卷积的形式了&#xff0c;但是我们现在还不知道∑i1nair,∑i1mbir,(r∈[0,k])设A(x)为∑…

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 示例 1&#xff1a; 输入&#xff1a; 2 输出&#xff1a; 2 解释&#xff1a; 有两种方法可以爬到楼顶…

netcore 中的动态代理与RPC实现(微服务专题)

一、关于RPC的调用1. 调用者&#xff08;客户端Client&#xff09;以本地调用的方式发起调用&#xff1b;  2. Client stub&#xff08;客户端存根&#xff09;收到调用后&#xff0c;负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体&#xff1b; …

多项式除法,多项式取模

多项式除法 给定一个nnn次多项式F(x)F(x)F(x)和mmm次多项式G(x)G(x)G(x)&#xff0c;要求R(x),Q(x)R(x), Q(x)R(x),Q(x)&#xff0c;满足F(x)R(x)G(x)Q(x)F(x) R(x)G(x) Q(x)F(x)R(x)G(x)Q(x)。 R(x)R(x)R(x)是一个n−mn - mn−m阶多项式&#xff0c;Q(x)Q(x)Q(x)是一个小于…

[翻译] .NET Core 3.0 Preview 9 发布

原文: Announcing .NET Core 3.0 Preview 9今天&#xff0c;我们宣布推出 .NET Core 3.0 Preview 9。就像 Preview 8 一样&#xff0c;我们专注于打磨 .NET Core 3.0 的最终版本&#xff0c;而不是添加新功能。如果这些最终版本看起来不像早期预览版那么令人兴奋&#xff0c;我…

南昌网络赛E Interesting Series

Interesting Series 可求得通项Fnan−1a−1F_n \frac{a ^ n - 1}{a - 1}Fn​a−1an−1​&#xff0c;一个等比数列的前nnn项和&#xff0c;value(s)Fsum(s)value(s) F_{sum(s)}value(s)Fsum(s)​。 题目要我们求的是Answer(K)∑s∈subsetofSand∣s∣Kvalue(s)Answer(K) \s…

谈谈“学习”这件事儿

曾经有童鞋在我博客留言&#xff1a;楼主你是如何学习的&#xff0c;肿么那么牛逼&#xff08;注&#xff1a;真不牛逼&#xff0c;只不过我讲的你刚好不知道&#xff0c;在你心中就形成了好牛逼的样子&#xff09;曾经也有童鞋加我好友&#xff0c;开头第一句则是&#xff1a;…

牛客练习赛50 F tokitsukaze and Another Protoss and Zerg

tokitsukaze and Another Protoss and Zerg 考虑生成函数&#xff0c;每一场的生成函数为∑j1b[i]Cb[i]j∑j1a[i]Ca[i]jxj\sum\limits_{j 1} ^{b[i]}C_{b[i]} ^ j \sum\limits_{j 1} ^{a[i]}C_{a[i]} ^{j} x ^ jj1∑b[i]​Cb[i]j​j1∑a[i]​Ca[i]j​xj&#xff0c; 进一步…

持续集成之应用k8s自动部署

持续集成之应用k8s自动部署Intro上次我们提到了docker容器化及自动化部署[1]&#xff0c;这仅仅适合个人项目或者开发环境部署&#xff0c;如果要部署到生产环境&#xff0c;必然就需要考虑很多因素&#xff0c;比如访问量大了如何调整部署&#xff0c;如何更好的应对大并发的情…

Fizz Buzz

题目描述 写一个程序&#xff0c;输出从 1 到 n 数字的字符串表示。 如果 n 是3的倍数&#xff0c;输出“Fizz”&#xff1b; 如果 n 是5的倍数&#xff0c;输出“Buzz”&#xff1b; 3.如果 n 同时是3和5的倍数&#xff0c;输出 “FizzBuzz”。 示例&#xff1a; n 15,返…

多项式全家桶(半)

快速傅里叶变换(FFT) 多项式表示 系数表示法&#xff1a; 一个nnn次多项式可以用n1n 1n1个系数表示出来&#xff1a;f(x)a0a1xa2x2⋯an−1xn−1anxnf(x) a_0 a_1 x a_2 x ^ 2 \dots a_{n - 1} x ^{n- 1} a_n x ^nf(x)a0​a1​xa2​x2⋯an−1​xn−1an​xn。 点值表示…

持续集成之应用容器化及自动化部署

通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署IntroAzure DevOps Pipeline 现在对于公开的项目完全免费&#xff0c;这对于开源项目来讲无疑是个巨大的好消息&#xff0c;在 Github 的 Marketplace 里有个 Azure Pipeline&#xff0c;就是微软的 Azure DevOps …

最小栈

题目描述 设计一个支持 push&#xff0c;pop&#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。 示例: MinStack minStack new …

持续集成之 Nuget 进阶

持续集成之 Nuget 进阶Intro之前介绍了一篇基于 Azure pipeline 的 nuget 包的持续集成配置&#xff0c;但是比较粗糙&#xff0c;这里介绍一下结合 Cake 实现更优雅的 nuget 包发布流程。实现目标&#xff1a;分支(除master/preview)有代码 push 或者 pr 时 自动 buildpreview…

#3771. Triple(生成函数 + 容斥)

#3771. Triple 考虑只有一个损失时&#xff0c;损失值的生成函数为A(x)A(x)A(x)。 如果不考虑无序方案&#xff0c;有两个损失的生成函数为B(x)A(x)A(x)B(x) A(x)A(x)B(x)A(x)A(x)&#xff0c;同理有三个的时候C(x)A(x)A(x)A(x)C(x) A(x)A(x)A(x)C(x)A(x)A(x)A(x)。 考虑如…

计数质数

题目描述 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解法 思路1&#xff1a;暴力法 /***暴力法* 时间复杂度O(n2)* 空间复杂度(O(1))* param n* return*/ public int countPrimes(int n) {if(n&…

做“是非题”的正确姿势

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达有时也会有感而发&#xff0c;来加个餐&#xff5e;我的第「107」篇原创敬上大家好&#xff0c;我是Z哥。这两天中国男篮的事&#xff0c;让我有感而发。不知道你有没有留意到&#xff0c;我们身边总有类似下面这样的事情…