基于Docker的Nginx的安装与配置

基于Docker的Nginx的安装与配置

  • 1 为Nginx创建一个容器
    • 1.1 学习docker run
    • 1.2 通过docker run为Nginx创建并启动一个容器
  • 2 配置Nginx
    • 2.1 学习docker的bind mount技术
    • 2.2 在Nginx容器中找到想修改的文件所在的目录
      • 2.2.1 认识nginx.conf文件
      • 2.2.2 访问Nginx服务,默认返回index.html
    • 2.3 找到后,在主机创建对应的目录,为后续挂载做准备 [在主机的终端进行操作]
      • 2.3.1 创建目录
      • 2.3.2 拷贝文件
      • 2.3.3 在主机中修改Nginx的index.html
    • 2.4 删除就Ngingx容器,重启新Nginx容器
    • 2.5 新Nginx容器,新的index.html

1 为Nginx创建一个容器

  • 实际中,后端代码部署在远端容器中以向外提供后端服务。
  • 类似的,我们可以在本地为Nginx创建一个容器,并提供Nginx服务。

1.1 学习docker run

  • 一般情况,启动一个服务,需要先拉取该服务的镜像,然后为该镜像启动一个容器。这个可以用一条命令来实现:docker run
  • 通过docker --help查看如何使用docker命令:
    在这里插入图片描述
  • 进一步查看:docker run --help
    在这里插入图片描述

Options很多,一般掌握最基本的的,也就够用了。如果遇到不够用的情况,把诉求描述给gpt,让它帮忙写就好了,或者google一下。

1.2 通过docker run为Nginx创建并启动一个容器

  • macOS的shell中执行:
docker run \
--restart always \
--name Nginx \
-d \
-p 80:80 \
nginx

常用参数的详细解释:
(1)--restart always:是设定重启策略,意味着无论容器的退出状态码是什么,Docker都会自动重启这个容器。这样可以保证在Docker进程或主机重启后,容器将自动启动。
(2)--name Nginx:是设定这个新建的Docker容器的名字为"Nginx"。如果不设定,Docker将自动给它分配一个随机的名字。
(3)-d是让这个容器在后台运行,而不是在当前的shell里。
(4)-p 80:80是设定端口映射,将主机的80端口映射到容器的80端口。这样,我们可以通过主机的80端口访问到容器内运行的服务。
(5)nginx是这个新建的Docker容器所使用的镜像的名字。
在这里插入图片描述

  • 通过本地的Docker客户端(Portainer也可以)查看Nginx容器
    在这里插入图片描述
  • 已经可以使用Nginx容器提供的Nginx服务了:
    在这里插入图片描述

2 配置Nginx

不支持定制的软件,不是好软件:)

  • 思路:将Nginx容器中的配置文件拷贝到主机,修改后,再删除之前的Nginx容器,并以“绑定挂载卷”的方式重新启动新Nginx容器,就可以让容器读到更新后的配置文件。
  • 这里直接采用docker的bind mount技术来更新配置文件。

2.1 学习docker的bind mount技术

Docker有两个选项让容器在主机上存储文件,即使在容器停止后文件也能持久保存:volume和 bind mount。

  • bind mount的效果:docker run [省略其他option] -v /path/to/nginx/conf:/etc/nginx/conf.d nginx

将主机上的 /path/to/nginx/conf 目录挂载到 Nginx 容器的 /etc/nginx/conf.d 目录后,在主机的 /path/to/nginx/conf 目录中编辑 Nginx 的配置文件,容器内的 /etc/nginx/conf.d 目录会实时看到这些更改。

  • 因此,要先找到想修改的文件所在的目录。

2.2 在Nginx容器中找到想修改的文件所在的目录

那我们就是要在Nginx容器中通过命令行来交互。

  • 执行命令:docker exec -it Nginx /bin/bash

(1)docker exec:这是Docker的一个命令,用来在运行的容器中执行命令。
(2)-it:这是两个参数,i代表交互模式,t为该命令分配一个伪TTY(终端)
(3)命令含义:在名为Nginx的容器中以交互模式启动一个bash shell
在这里插入图片描述

  • 通过查找Nginx配置相关的资料,可以知道我们要关注:/etc/nginx目录
    在这里插入图片描述

2.2.1 认识nginx.conf文件

在这里插入图片描述

  • /etc/nginx/nginx.conf文件是Nginx的主配置文件。它用于存储和管理nginx服务器的配置信息。在这个文件中,咱可以配置如何处理进入服务器的请求,如何转发这些请求,还可以配置日志、缓存和其他的服务器参数等。
  • 这个文件的配置语法是基于指令和参数的,每行都是一个指令和它的参数。指令之间由分号分隔,而参数之间则由空格分隔。

(1)在Nginx容器中,这个配置文件通常会被映射到宿主机的某个文件,以便于在容器外部进行编辑和管理。【这正是我们要做的】
(2)需要注意的是,任何对这个文件的修改都需要重启Nginx服务才能生效。

  • 在Nginx配置中,include指令用于包含其他配置文件,可以使主配置文件保持清晰和简洁,同时也方便管理和维护。当Nginx启动或重启时,它会读取include指令指定的所有文件,并把这些文件的配置内容合并到主配置文件中。[include /etc/nginx/conf.d/*.conf]

因此,我们不仅要关注nginx.conf,还要关注conf.d目录

2.2.2 访问Nginx服务,默认返回index.html

  • 这个index.html在哪?/usr/share/nginx/html/index.html
    在这里插入图片描述

2.3 找到后,在主机创建对应的目录,为后续挂载做准备 [在主机的终端进行操作]

2.3.1 创建目录

  • mkdir -p ~/docker_mount/nginx/conf/conf.d
  • mkdir -p ~/docker_mount/nginx/html

2.3.2 拷贝文件

  • docker container cp Nginx:/etc/nginx/nginx.conf ~/docker_mount/nginx/conf
  • docker container cp Nginx:/etc/nginx/conf.d/default.conf ~/docker_mount/nginx/conf/conf.d/

(1)/etc/nginx/conf.d/目录下只有default.conf
(2)docker container cp 不支持*,即Nginx:/etc/nginx/conf.d/*是不对的

  • docker container cp Nginx:/usr/share/nginx/html/index.html ~/docker_mount/nginx/html

2.3.3 在主机中修改Nginx的index.html

  • 修改
    在这里插入图片描述
    在这里插入图片描述

2.4 删除就Ngingx容器,重启新Nginx容器

  • 删除:docker stop Nginx && docker rm Nginx
    在这里插入图片描述
  • 以“bind mount”方式重启Nginx容器
docker run \
--restart always \
--name Nginx \
-d \
-v /Users/forrest.../docker_mount/nginx/html:/usr/share/nginx/html \
-v /Users/forrest.../docker_mount/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /Users/forrest.../docker_mount/nginx/conf/conf.d:/etc/nginx/conf.d \
-p 80:80 \
nginx

在这里插入图片描述

2.5 新Nginx容器,新的index.html

在这里插入图片描述

  • 之后直接在主机上修改配置,然后执行:docker stop Nginx && docker start Nginx

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

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

相关文章

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具,简化了记忆Git命令行的过程,将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

oracle 19c容器数据库data dump数据泵传输数据(3)---完全传输

目录 查看pdb1 创建pdb2 从pdb1 中导出元数据 在pdb2中导入元数据(dmp文件) Full Transportable Export/Import: Example 只传输除了system,sysaux,temp,undo以外的用户表空间,這種方式傳輸的是用戶自定…

C# 图解教程 第5版 —— 第24章 预处理指令

文章目录 24.1 什么是预处理指令24.2 基本规则24.3 符号指令(#define、#undef )24.4 条件编译(#if、#else、#elif、#endif)24.5 条件编译结构24.6 诊断指令(#warning、#error)24.7 行号指令(#li…

毕业设计:基于python微博舆情分析系统+可视化+Django框架 K-means聚类算法(源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

部署本地GPT

在现实生活中,很多公司或个人的资料是不愿意公布在互联网上的,但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢?于是我们构建自己或公司的本地专属GPT变得非常重要。 先看效果: 查资料不用愁 家教不…

linux安装minio

目录 1、服务器创建minio文件 2、进入minio下的bin下 3、授予服务端和客户端文件可执行权限 4、设置用户名和密码 5、启动minio服务 6、查看minio版本 ​7、访问minio控制台 1、服务器创建minio文件 # 创建minio应用程序目录 mkdir -p /opt/minio/bin # 创建minio数据目…

IP定位技术在网络安全行业的探索

随着互联网的普及和深入生活,网络安全问题日益受到人们的关注。作为网络安全领域的重要技术,IP定位技术正逐渐成为行业研究的热点。本文将深入探讨IP定位技术在网络安全行业的应用和探索。 一、IP定位技术的概述 IP定位技术是通过IP地址来确定设备地理位…

josef约瑟 电流继电器 DL-13/2 0.5 -1A 1NC, 1NO柜内安装,带附件

系列型号 DL-11电流继电器; DL-12电流继电器; DL-13电流继电器; 一、应用范围 DL-13/2电流继电器 板前接线为电磁式瞬动过电流继电器,它广泛用于电力系统二次回路继电保护装置线路中,作为过电流启动元件。 二、主要技术参数据 动作时间…

c语言[]优先级大于*优先级

本博文源于笔者正在学习的c语言[]优先级大于*优先级.在定义二维数组时&#xff0c;a1与[]号结合后&#xff0c;谁的优先级更高&#xff0c;是本博文探讨的话题 博文来源 想要看看*与[]谁的优先级更高 博文代码 #include<stdio.h> #include<stdlib.h> int main(…

九、Qt C++ 数据库开发

《一、QT的前世今生》 《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》 ​​​ 《四、Qt 的第一个demo-CSDN博客》 《五、带登录窗体的demo》 《六、新建窗体时&#xff0c;几种窗体的区别》 《七、Qt 信号和槽》 《八、Qt C 毕业设计》 《九、Qt …

ROS第 6 课 编写简单的订阅器 Subscriber

文章目录 第 6 课 编写简单的订阅器 Subscriber1. 编写订阅者节点2. 测试发布者和订阅者 第 6 课 编写简单的订阅器 Subscriber 订阅器是基于编辑了发布器的基础上创建的&#xff0c;只有发布了消息&#xff0c;才有可能订阅。若未编辑发布器&#xff0c;可前往"ROS第5课 …

「解析」Jetson配置 git服务

这两天感冒了在家休养&#xff0c;想着把之前买的 Jetson 开发板用起来&#xff0c;买Jetson的初衷就是用来学习Linux系统&#xff0c;顺道可以部署算法&#xff0c;以及一些其他需求&#xff0c;相比树莓派而言&#xff0c;Jetson开发相对更贵&#xff0c;但是其配备了英伟达的…