Docker:docker安装nginx

news2024/11/18 9:48:01

目录

一、容器之间相互通信

1、两个容器在同一网段

 2、两个容器在不同网段

 二、安装Nginx

1.nginx是什么

 2. 安装nginx

 三、部署前端项目

 2.nginx.conf讲解

一、容器之间相互通信

1、两个容器在同一网段

查看docker中已安装的所有网络

docker network ls

 查看自定义网络mynet中的配置信息

docker network inspect mynet

 启动容器时,指定网络、IP

docker run --name centos1 -itd --net mynet --ip 192.168.0.11 centos:7
docker run --name centos2 -itd --net mynet --ip 192.168.0.12 centos:7

 注1:有些下载的镜像,执行docker run -d 不加-it参数运行后就直接exited(0),这是制作此镜像的基础镜像的问题,添加-itd即可,
例如:centos镜像就要加-itd,nginx镜像则不需要-it,-d即可
注2:在有些镜像启动时,还可以通过-P或-p参数绑定宿主机端口号,例如:nginx镜像,因为容器内部已放开此端口号
注3:停止并删除所有容器
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
 

 启动容器后检查网络之间是否可以互通

docker exec -it centos1 ping centos2

 2、两个容器在不同网段

使用局域名bridge

docker run --name centos1 -itd centos:latest
docker network inspect bridge

 使用局域网mynet

docker run --name centos2 -itd --net mynet --ip 192.168.0.12 centos:latest
docker network inspect mynet

 测试centos1和centos2的连接

docker exec -it centos1 ping centos2

 连接失败,控制台出现如下提示

ping: centos2: Name or service not known

 如何解决此问题呢?向网络mynet中添加容器centos1

docker network connect mynet centos1

 为什么成功了呢?原因:容器centos1具有两个ip
#查看网络信息
docker network inspect mynet
#查看容器详细信息
docker inspect centos1

 二、安装Nginx

1.nginx是什么

Nginx也是一款服务器,我们常用它做如:反向代理、负载均衡、动态与静态资源的分离的工作
反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,
并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
负载均衡:目前大多数的网站都会采用负载均衡手段来针对目前用户的指数级增长来减少对单点服务器的负载压力,
比如目前我们拥有3台真实服务器,我们需要根据相应策略决定什么样的用户请求分配到哪个真实服务器,比如按照轮询的方式,
用户请求挨个到达代理服务器,此时代理服务器按照第一个请求转发至第一台真实服务器,第二个请求转发到第二个服务器上,依次类推,
这样可以防止大量的用户请求全部访问到同一台物理机上,单点物理机的性能始终有限的,当然这可能对服务器数据访问时候造成事务性的失效
Nginx+tomcat是目前主流的java web架构
 

 2. 安装nginx

搜索nginx镜像

docker search nginx

 拉取镜像

docker pull nginx

 在宿主机中创建挂载目录

mkdir -p /data/nginx/{conf,conf.d,html,log}

注1:因为在nginx镜像中没有安装vi或vim编辑器(安装又太麻烦了),无法编辑nginx配置文件,所以直接通过数据卷挂载上去更加方便
注2:将nginx配置文件nginx.conf上传到宿主机的挂载目录“/data/nginx/conf”下
注3:将vue前端项目打包后上传到宿主机的挂载目录“/data/nginx/html”下并解压
unzip dist.zip

 根据nginx镜像创建nginx容器(测试nginx的安装与访问,并没有发布任何的java或vue项目,最后此容器要删除的)

#简单测试nginx镜像
A.使用docker内置网络bridge
docker run
–name mynginx
-d -p 80:80
nginx:latest

 

  #登录nginx容器
  docker exec -it mynginx  /bin/bash
   
   B.使用自定义网络mynet ???外部浏览器连接不上
   docker run \
   --name mynginx \
   -d -p 80:80 \
   --net mynet --ip 192.168.0.13 \
   nginx:latest

   注1:记得修改centos7的防火墙放开80端口
        # 开启80端口
        firewall-cmd --zone=public --add-port=80/tcp --permanent

        #重启防火墙(不重启以上的设置是不会生效的):
        firewall-cmd --reload

        #查询指定端口号是否开启:
        firewall-cmd --query-port=80/tcp

  小结:  mynginx使用docker内置网络bridge,再mynginx添加至mynet中

查看本地的容器,可以看到nginx容器已经创建成功了

docker ps

 测试nginx是否安装成功

打开浏览器输入:http://192.168.183.133( http://宿主机ip:80),正常情况下会显示nginx的欢迎页面

 三、部署前端项目

nginx+tomcat实现反向代理及均衡
nginx+html静态服务器

 1.创建nginx容器

docker run
–name mynginx
-d -p 80:80
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/log:/var/log/nginx
-v /data/nginx/html:/usr/share/nginx/html
nginx:latest

 注1: 因为在nginx镜像中没有安装vi或vim编辑器(安装太麻烦了),无法编辑nginx配置文件,所以所有数据和配置都是通过数据卷挂载
第一个-v:挂载nginx的主配置文件,以方便在宿主机上直接修改容器的配置文件
第二个-v:挂载容器内nginx的日志,容器运行起来之后,可以直接在宿主机的这个目录中查看nginx日志
第三个-v:挂载静态页面目录
注意命令之间的换行与空格
注2:如果容器创建失败,可通过如下命令,查看在docker容器启动日志
docker logs -f -t --tail 行数 容器名
docker logs -f -t --tail 100 mynginx
注3:如果要进入容器内部,这里是bash而非sh,要根据实际的基础镜像来
docker exec -it mynginx /bin/bash

 2.nginx.conf讲解

①所有配置必须以“;”结尾

②nginx发布java项目

nginx+tomcat实现反向代理及均衡
upstream tomcats{
#TODO:172.17.0.3是docker容器的IP
server 172.17.0.3:8080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server 172.17.0.4:8080 weight=2;
}

location / {
  proxy_pass http://tomcats;
  proxy_redirect default;
}    

 ③nginx发布静态vue项目

测试Nginx配置是否正确命令,先进入主程序的安装目录

cd /usr/local/nginx/conf
/usr/local/nginx/sbin/nginx -t # 判断Nginx配置是否正确命令
tail -100f /var/log/nginx/access.log # 查看Nginx访问日志,必须以nginx.conf配置文件的目录一致
service nginx start # 启动
service nginx stop # 停止
service nginx restart # 重新启动
service nginx reload # 重新加载配置,平滑启动
service nginx status # 查看nginx状态
ps -ef | grep nginx # 查看Nginx安装目录,master process后面的就是nginx的目录
cd /usr/sbin # 进入nginx主程序的安装目录
/usr/sbin/nginx -V # -v 显示 nginx 的版本,本示例安装版本为:nginx version: nginx/1.14.2 (Ubuntu)
/usr/sbin/nginx -V # -V 显示 nginx 的版本,编译器版本和配置参数

 这是用虚拟机分配的端口号访问到的页面 证明成功了

 

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

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

相关文章

springboot+java农家乐系统-住宿-美食-活动vue

目 录 摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 系统开发环境 5 2.1 JAVA简介 5 2.2 B/S架构 5 2.3系统对MySQL数据库的两种连接方式 6 2.4 MySql数据库 6 3 需求分析 7 3.1技术可行性&#xff1a…

交互式分割: Interactive Object Segmentation with Inside-Outside Guidance

论文:https://ieeexplore.ieee.org/document/9157733 代码: https://github.com/shiyinzhang/Inside-Outside-Guidance 思想概述 作者利用画取一个BBOX 作为前、背景的快速区分,同时在BBOX内进行进行动手动在前景对象上进行交互&#xff0c…

安装博客,论坛

准备环境 防火墙,selinux关掉 [rootboke ~]#yum -y install mariadb mariadb-server mariadb-libs php php-mysql php-gd php-fpm php-cli gd httpd 安装lamp环境 [rootboke ~]# systemctl start httpd mariadb 启动httpd和mariadb 搭建博客 配数据库 [root…

毕业设计-BP神经网络的房地产价值评估研究

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

(已更新)BGS本地局域网视频源码

BGS本地局域网视频源码是PHP的,TP5.1 数据库和伪静态设置在压缩包,记得设置运行目录为public 数据库配置请到 config\database.php中修改 只支持MP4,上传后观看时候会自动进行转换为m3u8,调用的是FFmpeg,主要就是为了研究php使用F…

[1.2.0新功能系列:三]Apache doris 1.2.0 Java UDF 函数开发及使用

概述 我们在使用各个SQL引擎时,会有纷繁复杂的查询需求。一部分可以通过引擎自带的内置函数去解决,但内置函数不可能解决所有人的问题,所以一般SQL引擎会提供UDF功能,方便用户通过自己写逻辑来满足特定的需求,Doris也…

【扫盲】Getting into project of R

⭐️ what is an r project include in r studio? An R project in RStudio is a self-contained directory that contains all the files and resources associated with a specific R project. This includes the R code files, data files, output files, and any additio…

虹科案例 | 虹科Panarama SCADA平台在风电场测量的应用,实现风电场的高效管理!

虹科Panorama SCADA平台 在风电场测量的应用 虹科方案 01应用背景 随着煤碳、石油等能源的逐渐枯竭,人类越来越重视可再生能源的利用。风能作为一种清洁的可再生能源日益受到世界各国的重视。中国风能储量大,分布面广,仅陆地上的风能储量就…

go基础第二遍学习——简单易理解

此博文是猿猿对go基础的二遍学习,这一遍学习中对go基础有了进一步的理解,笔记齐全,下面跟着猿猿一起学习吧。 文章目录零、知识补充一、包引入三种方式二、go变量和基本数据类型2.1.基本数据类型2.1.1.整数类型2.1.2.浮点类型2.1.3.字符串类型…

VTK-vtkFieldData

欢迎大家加入社区,雪易VTK社区-CSDN社区云 前言:为区分vtkPoints和vtkPointData的区别,了解vtkFieldData在VTK中的存在意义,从而系统的掌握vtk中关于数据的表达方式。 vtk中通过vtkDataArray进行数据的存储,通过vtkD…

艾美捷内皮细胞生长添加剂参数说明和相关研究

内皮细胞生长因子(ECGF)或内皮细胞生长补充物(ECGS)是一个术语,也用于含有促进内皮细胞生长和维持活性的牛(或猪)脑提取物(T.Maciag,1972和1982)。在早期&…

SQL语法CREATE_大数据培训

1 CREATE 1.1 CREATE DATABASE 用于创建指定名称的数据库,语法如下: CREATE DATABASE [IF NOT EXISTS] db_name 如果查询中存在IF NOT EXISTS,则当数据库已经存在时,该查询不会返回任何错误。 create database test; Ok. 0 …

【虚幻引擎】UE4/UE5Map、Set、 Array的用法

一、Array Array:数组是一个内存空间连续,可以存储多个相同类型的有序的元序列集合。 每一个索引值对应一个Value值,比如0号索引值对应A,值可以是任意类型的变量 用法: 节点 描述 Add 取入一个数组和一个变量。它将该变量插入…

014. 解数独

1.题目链接: 37. 解数独 2.解题思路: 2.1.题目要求: 暂时的理解就是,编写一个程序然后自动填完数独,填完返回(不用求解各种不同的数独组合) 填的时候,数字要满足的规则&#xff1…

198.打家劫舍,213.打家劫舍II ,337.打家劫舍III

198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

项目管理中的WBS

项目管理中的WBS(工作分解结构) 在项目管理中,我们必然会用到一个工具WBS(工作分解结构),在PMP的课程中,也作为了一个重要的考察对象。 一. WBS的定义 工作分解结构(Work Breakdown Structure):以可交付成…

什么是网络分析仪噪声参数?

噪声参数在被测器件的输入端口和测试仪器内置噪声接收机的输入端口上都会产生影响。要想了解为什么噪声参数会给测量结果带来误差,我们首先需要了解什么是噪声参数。放大器的噪声参数描述了噪声系数随着源阻抗Γs而变化的情况。在史密斯圆图上,噪声参数通…

长盈通在科创板上市:研发费用率低于行业均值,皮亚斌为实控人

12月12日,武汉长盈通光电技术股份有限公司(下称“长盈通”,SH:688143)在上海证券交易所科创板上市。本次上市,长盈通的发行价为35.67元/股,发行市盈率48.61倍,而该公司所属行业最近一个月静态平…

QTabBar进阶用法:修改标题宽度,使标题宽度自适应窗体宽度,close图标大小设置,close图标修改,文字对齐方式修改

这是一个没有处理过的QTabWidget, 在功能上已经满足使用了,但是有时会有一些外观上特殊的需求,需要对它进行修改。 1. 更改标签的长度。 可以用样式表改: setStyleSheet("QTabBar::tab{height:50;width:200}");"QTabBar::t…

GitLab安装与卸载

一、安装Postfix以发送通知邮件 安装命令:sudo yum install postfix 将postfix服务设置成开机自启动,安装命令:sudo systemctl enable postfix 启动postfix,安装命令:sudo systemctl start postfix 二、安装gitlab …