【Nginx】docker运行Nginx及配置

Nginx镜像的获取

  1. 直接从Docker Hub拉取Nginx镜像
  2. 通过Dockerfile构建Nginx镜像后拉取

二者区别

主要区别在于定制化程度和构建过程的控制:

  1. 直接拉取Nginx镜像:

    • 简便性:直接使用docker pull nginx命令可以快速拉取官方的Nginx镜像。这个过程非常简单,适合快速部署标准的Nginx服务。
    • 标准化:拉取的是Nginx官方维护的镜像,保证了环境的一致性和可靠性。这个镜像经过了官方的优化和安全更新。
    • 限制:官方镜像提供了Nginx的标准安装,可能不包含特定的模块或配置。如果需要特殊配置或额外的模块,可能需要在容器启动后手动进行调整。
  2. 通过Dockerfile构建Nginx镜像:

    • 定制化:通过编写Dockerfile,可以在构建过程中定制Nginx的安装,包括添加特定的模块、配置文件、环境变量等。这为满足特定需求提供了灵活性。
    • 自动化:构建过程可以自动化执行,包括从基础镜像安装Nginx、应用配置文件、复制网站内容等。这使得整个部署过程可重复、可追踪。
    • 维护:如果需要更新配置或添加功能,可以直接修改Dockerfile和相关文件,然后重新构建镜像。这简化了更新和维护过程。
    • 构建时间:根据Dockerfile的复杂度,构建镜像可能需要一些时间。对于频繁的构建和测试,这可能会稍微增加开发周期。

总结,直接拉取Nginx镜像适合快速部署和标准使用场景,而通过Dockerfile构建Nginx镜像适合需要特定配置、模块或自动化部署流程的场景。选择哪种方式取决于项目的具体需求和开发流程。

Nginx关键目录

  1. 配置目录 (/etc/nginx/): 存放Nginx的主配置文件nginx.conf以及其他配置文件。这个目录通常包括:
    • nginx.conf:主配置文件
    • sites-available/:存放每个站点的配置文件,这些文件需要被链接到sites-enabled/才能被Nginx读取。
    • sites-enabled/:存放链接到sites-available/中站点配置文件的符号链接,Nginx会读取这里的配置来启动网站。
    • conf.d/:用于存放其他额外的配置文件,Nginx会自动加载这个目录下的配置文件。
      - default.conf : 默认服务器配置文件
      - *.conf:额外的配置文件
  2. 日志目录 (/var/log/nginx/): 存放访问日志和错误日志。
    • access.log:默认的访问日志文件,记录所有请求的详细信息。
    • error.log:默认的错误日志文件,记录启动、运行错误以及请求处理的问题。
  3. 网站内容目录 (/usr/share/nginx/html): 默认的网站根目录,存放网站的静态文件,如HTML、CSS、JavaScript等。
  4. 可执行文件目录 (/usr/sbin/nginx): 存放Nginx的可执行文件。
  5. 客户端临时文件目录 (/var/cache/nginx/): 存放客户端请求的临时文件,比如用于缓存的文件。
  6. SSL证书目录: 存放SSL证书和私钥的目录,通常这个目录不是固定的,需要在Nginx的SSL配置中指定证书和私钥文件的路径。

直接从Docker Hub拉取Nginx镜像

  1. 拉取最新的Nginx官方镜像:
docker pull nginx
  1. 如果你想要拉取特定版本的Nginx镜像,可以通过指定标签来完成。例如,要拉取Nginx 1.19版本的镜像,可以使用:
docker pull nginx:1.19
  1. 查看已下载的镜像
docker images
  1. 配置Nginx
    通常所有配置都应该通过Docker卷(volumes)或绑定挂载(bind mounts)来管理,以便于配置的持久化和更新。
    所以先在宿主机上创建配置文件 ,再将其挂载到nginx
  • /home/nginx/nginx.conf
worker_processes        1;  # 工作进程数量,通常设置为CPU核心数events {worker_connections      1024; # 每个工作进程的最大连接数
}http {include         /etc/nginx/mime.types;  # 包含MIME类型定义default_type    application/octet-stream;  # 默认文件类型sendfile        on; # 启用高效文件传输模式keepalive_timeout       65; # 保持连接的超时时间server {listen  80; # 监听的端口server_name     localhost;location / {root    /usr/share/nginx/html;  # 静态文件的根目录index   index.html index.htm;  # 默认文件}error_page      500 502 503 504 /50x.html; # 错误页面location = /50x.html {root    /usr/share/nginx/html; # 错误页面的根目录 }}
}
  • /home/nginx/html/index.html
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>my nginx test</title></head><body><div>hello nginx html</div><h1>edit html</h1></body></html>
  1. 运行Nginx
docker run --name my-nginx-test3  -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf     -v /home/nginx/html:/usr/share/nginx/html  -d nginx

运行容器:docker run
–name: 为容器指定一个唯一的名称,可以通过名称来引用容器,而不是使用容器的ID
-p:映射端口,[宿主机端口(访问端口)]:[nginx容器内端口]
-v :绑定挂载配置 [宿主机路径]:[容器内路径]
-d:后台运行,返回运行成功的镜像id

  1. 查看运行的容器
docker ps

在这里插入图片描述

  1. 运行后修改配置文件重启生效
  • 重载Nginx配置:
docker exec <容器name> nginx -s reload
  • 重启Nginx容器:
docker restart nginx
  1. 浏览器输入ip:端口
    在这里插入图片描述

通过Dockerfile构建Nginx镜像后拉取

注意执行上下文路径

  1. 创建Dockerfile:创建一个Dockerfile来构建您的Nginx镜像。
# 使用Nginx官方镜像作为基础镜像
FROM nginx:alpine# 将dist目录(包含index.html和其他静态文件)复制到Nginx容器的静态文件目录
# ./dist相对执行构建上下文的路径
COPY ./dist/ /usr/share/nginx/html/# 将自定义的Nginx配置文件复制到Nginx容器(此步骤将修改nginx完整的主配置文件)
COPY nginx/nginx.conf /etc/nginx/nginx.conf
  1. 准备Nginx配置文件(nginx.conf):创建一个Nginx配置文件来定义如何服务您的静态文件。
    同上面的 /home/nginx/nginx.conf 文件
  2. 准备dist/index.html文件
	<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>dockerfile nginx test</title></head><body><div>hello use dockerfile nginx html</div></body></html>
  1. 构建和运行Docker容器:使用Dockerfile和Nginx配置文件构建Docker镜像,并运行容器。
  • 构建Docker镜像

    docker build -t my-dockerfile-nginx -f Dockerfile .
    

    -t: 选项用于指定镜像的名称和标签
    . :最后的点号表示当前目录是构建上下文
    -f:指定dockerfile所在位置,若在当前执行目录可不用指定

  • 运行Docker容器,开放9999端口访问

    docker run --name dockerfile-nginx -p 9999:80 -d my-dockerfile-nginx
    
  1. 浏览器输入ip:端口
    在这里插入图片描述

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

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

相关文章

SpringBoot 启动流程四

SpringBoot启动流程四 前面这个创建对象是初始化SpringApplication对象 是加载了SpringBoot程序的所有相关配置 我们接下来要将这个run方法 run过程是一个运行 初始化容器 我们看我们的运行结果是得到一个ConfigurableApplicationContext对象 package com.bigdata1421.star…

【Android】Android基础--显式Intent和隐式Intent

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

STM32和DHT11使用显示温湿度度(代码理解)+单总线协议

基于STM32CT&#xff0c;利用DHT11采集温湿度数据&#xff0c;在OLED上显示。一定要阅读DHT11数据手册。 1、 DHT11温湿度传感器 引脚说明 1、VDD 供电3.3&#xff5e;5.5V DC 2、DATA 串行数据&#xff0c;单总线 3、NC 空脚 4、GND 接地&#xff0c;电源负极 硬件电路 微…

【Linux进程】进程优先级 Linux 2.6内核进程的调度

前言 进程是资源分配的基本单位, 在OS中存在这很多的进程, 那么就必然存在着资源竞争的问题, 操作系统是如何进行资源分配的? 对于多个进程同时运行, 操作系统又是如何调度达到并发呢? 本文将以Linux kernel 2.6为例 , 向大家介绍进程在操作系统中 (OS) 的调度原理; 1. 进程优…

嵌入式linux面试1

1. linux 1.1. Window系统和Linux系统的区别 linux区分大小写windows在dos&#xff08;磁盘操作系统&#xff09;界面命令下不区分大小写&#xff1b; 1.2. 文件格式区分 windows用扩展名区分文件&#xff1b;如.exe代表执行文件&#xff0c;.txt代表文本文件&#xff0c;.…

.net 调用海康SDK的跨平台解决方案

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔序言 上2篇海康SDK使用以及常见的坑…

玩转Easysearch语法

Elasticsearch 是一个基于Apache Lucene的开源分布式搜索和分析引擎&#xff0c;广泛应用于全文搜索、结构化搜索、分析等多种场景。 Easysearch 作为Elasticsearch 的国产化替代方案&#xff0c;不仅保持了与原生Elasticsearch 的高度兼容性&#xff0c;还在功能、性能、稳定性…

Python基础小知识问答系列-高效遍历多个不同类型元素的迭代器

1. 问题&#xff1a; 当需要对多个迭代器进行相同遍历操作时&#xff0c;如何避免因为迭代器之间的类型或者迭代器元素 数量过大引发的问题&#xff1f; 2. 解决方法&#xff1a; 使用itertools模块中的chain函数。 示例&#xff1a; from itertools import chainlist_a [2,…

C语言之Const关键字与指针

目录 1 前言2 变量与指针的储存方式3 const int *var;int *const var&#xff1b;const int *const var&#xff1b;理解与区分4 总结 1 前言 实际开发过程中经常遇到const关键字作用于指针的情况&#xff0c;例如&#xff1a;const int *var;int *const var&#xff1b;const…

【前端】从零开始学习编写HTML

目录 一、什么是前端 二、什么是HTML 三、HTML文件的基本结构 四、HTML常见标签 4.1 注释标签 4.2 标题标签 4.3 段落标签 4.4 换行标签 4.5 格式化标签 4.6 图片标签 4.7 超链接标签 4.8 表格标签 4.9 列表标签 4.10 表单标签 &#xff08;1&#xff09;form标…

【vue动态组件】VUE使用component :is 实现在多个组件间来回切换

VUE使用component :is 实现在多个组件间来回切换 component :is 动态父子组件传值 相关代码实现&#xff1a; <component:is"vuecomponent"></component>import componentA from xxx; import componentB from xxx; import componentC from xxx;switch(…

电脑f盘的数据回收站清空了能恢复吗

随着信息技术的飞速发展&#xff0c;电脑已成为我们日常生活和工作中不可或缺的设备。然而&#xff0c;数据的丢失或误删往往会给人们带来极大的困扰。尤其是当F盘的数据在回收站被清空后&#xff0c;许多人会陷入绝望&#xff0c;认为这些数据已无法挽回。但事实真的如此吗&am…

windows server2016搭建AD域服务器

文章目录 一、背景二、搭建AD域服务器步骤三、生成可供java程序使用的keystore文件四、导出某用户的keytab文件五、主机配置hosts文件六、主机确认是否能ping通本人其他相关文章链接 一、背景 亲测可用,之前搜索了很多博客&#xff0c;啥样的都有&#xff0c;就是不介绍报错以…

STM32-I2C硬件外设

本博文建议与我上一篇I2C 通信协议​​​​​​共同理解 合成一套关于I2C软硬件体系 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担 特点&#xff1a; 多主机功能&#x…

利用border绘制三角技巧

绘制三角形的效果如图 <html lang"zh-cn"> <head><meta charset"UTF-8"><title>demo</title><style>* {margin: 0;padding: 0;}.box {/* 盒子宽高改成零就变成三角形 &#xff0c;需要哪个方向的三角形就设置哪个方向…

猫狗图像分类-划分数据集

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

大学教师门诊预约小程序-计算机毕业设计源码73068

摘要 在当今数字化、信息化的浪潮中&#xff0c;大学校园的服务管理正朝着智能化、便捷化的方向迈进。为了优化大学教师的医疗体验&#xff0c;提升门诊预约的效率和便捷性&#xff0c;我们基于Spring Boot框架设计并实现了一款大学教师门诊预约小程序。该小程序不仅提供了传统…

【吊打面试官系列-MyBatis面试题】MyBatis 实现一对一有几种方式?具体怎么操作的?

大家好&#xff0c;我是锋哥。今天分享关于 【MyBatis 实现一对一有几种方式?具体怎么操作的&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; MyBatis 实现一对一有几种方式?具体怎么操作的&#xff1f; 有联合查询和嵌套查询,联合查询是几个表联合查询,只查询…

C# Application.DoEvents()的作用

文章目录 1、详解 Application.DoEvents()2、示例处理用户事件响应系统事件控制台输出游戏和多媒体应用与操作系统的交互 3、注意事项总结 Application.DoEvents() 是 .NET 框架中的一个方法&#xff0c;它主要用于处理消息队列中的事件。在 Windows 应用程序中&#xff0c;当一…

003-基于Sklearn的机器学习入门:回归分析(上)

本节及后续章节将介绍机器学习中的几种经典回归算法&#xff0c;所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇&#xff0c;将介绍基础的线性回归方法&#xff0c;包括线性回归、逻辑回归、多项式回归和岭回归等。 2.1 回归分析概述 回归&#xff08;Regression&…