创建三个docker容器以实现nginx的负载均衡

编写nginx的dockfile

[root@docker nginx]# cat Dockerfile
FROM nginx RUN echo 'i am container 1' > /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx","-g","daemon off;"]
[root@docker nginx]#

创建自定义网络

docker network create --driver bridge  --subnet 192.168.13.0/24 --gateway 192.168.13.1 mqynet

启动两个容器

docker run -d  --name docker01 -v modify:/usr/share/nginx/html --net mqynet -p 801:80   mqynginx
docker run -d --name docker02 -v modify2:/usr/share/nginx/html --net mqynet -p 802:80 mqynginx

--net 指定为自定义网络

修改容器2的内容

[root@docker _data]# pwd
/var/lib/docker/volumes/modify2/_data
[root@docker _data]# cat index.html
i am container 2
[root@docker _data]#

balancer dockerfile

[root@docker nginx]# cat balancer
FROM nginx RUN echo 'i am container 1' > /usr/share/nginx/html/index.html EXPOSE 80 RUN apt update && apt install -y vim && apt install net-tools -y CMD ["nginx","-g","daemon off;"]

进入balancer并安装ping命令

apt-get install inetutils-ping

尝试ping通容器名

ping docker02

修改balancer配置文件

upstream web{
server docker01;
server docker02;
} server {
listen 80;
listen [::]:80;
server_name localhost; #access_log /var/log/nginx/host.access.log main; location / {
proxy_pass http://web; #添加此location
}

重读配置文件

docker restart balancer

ctrl + q + p

暂停镜像

提交镜像

docker commit balancer balancer:2.0

再次生成balancer容器

docker run -d --name balancer -p 803:80 --net mqynet balancer:2.0

验证负载均衡

[root@docker docker]#
[root@docker docker]# curl localhost:803
i am container 2
[root@docker docker]# curl localhost:803
i am container 1
[root@docker docker]# curl localhost:803
i am container 2
[root@docker docker]# curl localhost:803
i am container 1

上传balancer镜像到云

登录云

docker login --username=sux registry.cn-sxy/balancer:2.0

给镜像打标签

docker tag f6e2cefb3ef0 registry.cn-sxy/balancer:2.0

docker push registry.cn-sxy/balancer:2.0

使用其他用户拿到镜像

docker pull registry.cn-sxy/balancer:2.0

关于挂载

modify:/usr/share/nginx/html 具名挂载

/xxx:/usr/share/nginx/html 路径挂载 (容器路径里的东西会被外面的文件直接覆盖)

docker nginx容器的均衡负载的更多相关文章

  1. tomcat+nginx+redis实现均衡负载、session共享(一)

    在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一些状况: 1.用户还在操作,被强迫终止了(我们可以看日志等没人操作的时候更新,但总可能会有万一) ...

  2. 【转载】tomcat+nginx+redis实现均衡负载、session共享(一)

    http://www.cnblogs.com/zhrxidian/p/5432886.html 在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一 ...

  3. (转)tomcat+nginx+redis实现均衡负载、session共享(一)

    在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一些状况: 1.用户还在操作,被强迫终止了(我们可以看日志等没人操作的时候更新,但总可能会有万一) ...

  4. Centos7 docker nginx容器搭建

    一.安装docker http://www.cnblogs.com/WJ--NET/p/8553807.html 二.创建Dockerfile #创建文件夹 mkdir centos_nginx cd ...

  5. tomcat+nginx+redis实现均衡负载、session共享(二)

    今天我们接着说上次还没完成session共享的部分,还没看过上一篇的朋友可以先看下上次内容,http://www.cnblogs.com/zhrxidian/p/5432886.html. 1.red ...

  6. tomcat+nginx+redis实现均衡负载以及session共享

    1.redis简介及下载安装 作为这次的主角,相信大家对redis应该都一定印象,redis是一款开源的高性能key-value数据库,拥有丰富的键值储存类型,并提供多种语言的API. 与一般数据库不 ...

  7. 【转载】tomcat+nginx+redis实现均衡负载、session共享(二)

    今天我们接着说上次还没完成session共享的部分,还没看过上一篇的朋友可以先看下上次内容,http://www.cnblogs.com/zhrxidian/p/5432886.html. 1.red ...

  8. 转 tomcat+nginx+redis实现均衡负载、session共享(二)

    http://www.cnblogs.com/zhrxidian/p/5491285.html http://www.cnblogs.com/zhrxidian/p/5432886.html

  9. Docker+nginx+tomcat7配置简单的负载均衡

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/4995513.html 本文介绍在Docker上配置简单的负载均衡,宿主机为Ubuntu 14.04.2 ...

  10. 同主机下Docker+nginx+tomcat负载均衡集群搭建

    想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...

随机推荐

  1. ansible常用模块的学习

    ansible常用模块列表: 1.file 点击查看代码 2.copy 点击查看代码 3.yum--repository 点击查看代码 4.yum 点击查看代码 5.service 点击查看代码 6. ...

  2. jquery的筛选器

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  3. TQX 的 DP AAgain!

    闲话: 这确实抽象,将所有人给干离线了-- 不如叫做 TQX 的离线 DP QwQ DP 基本思路就是找一个比较好的能够描绘问题的状态,想怎么转移,再进行优化. --TQX 背包 DP loj 608 ...

  4. [SWPUCTF 2021 新生赛]easy_md5

    打开靶场可以看到一串代码,进行代码审计我们可以知道这个网页包含了一个叫flag2.php的文件,如果想要得到这个文件就得进行GET传参和POST传参. 并且这里用到一个MD5绕过,传参的值不能相等,但 ...

  5. LeetCode 621. 任务调度器 (Java)

    题目: 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.C ...

  6. 剑指Offer-66.机器人的运动范围(C++/Java)

    题目: 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能够 ...

  7. EF INNER JOIN WHERE ORDER BY

    同时使用 join,where,order by. UpdaterDbContext db = new UpdaterDbContext(); // 按 t_server 表的 seq ASC 排序, ...

  8. 利用ADB获取APP资源

    最近小编经常受到失眠的困扰,因为在编写一个安卓体能评定的软件,同时又在构思一个桌面管理应用,不管是构想还是操作上都遇到了很多难题,所以寄希望于小编手机上的一款软件,因为版权问题,就不说出它叫啥名字了. ...

  9. FreeRTOS简单内核实现3 任务管理

    0.思考与回答 0.1.思考一 对于 Cotex-M4 内核的 MCU 在发生异常/中断时,哪些寄存器会自动入栈,哪些需要手动入栈? 会自动入栈的寄存器如下 R0 - R3:通用寄存器 R12:通用寄 ...

  10. C# 13(.Net 9) 中的新特性 - 扩展类型

    C# 13 即 .Net 9 按照计划会在2024年11月发布,目前一些新特性已经定型,今天让我们来预览一个比较大型比较重要的新特性: 扩展类型 Extension types 在5月份的微软 Bui ...