Linux中使用Docker构建Nginx容器完整教程

news2024/11/12 22:04:26

 

🏡作者主页:点击! 

🐧Linux基础知识(初学):点击!

🐧Linux高级管理防护和群集专栏:点击!

🔐Linux中firewalld防火墙:点击!

⏰️创作时间:2024年9月13日14点15分


目录

前言

1.下载基础镜像

2.建立工作目录

3.编写Dockerfile文件

4.便携执行脚本内容

5.生成镜像

构建过程

6.启动容器并测试

7. 查看端口状态信息

8进行访问测试

总结


前言

在现代应用程序开发中,容器化技术已成为一种流行的解决方案。Docker 作为一种强大的容器化平台,使得开发、测试和部署变得更加高效和灵活。Nginx 是一款广泛使用的高性能 Web 服务器和反向代理服务器,适用于各种场景,如静态文件服务、负载均衡和 API 网关等。在本教程中,我们将详细介绍如何在 Docker 中构建并运行一个 Nginx 容器,帮助开发者快速搭建和管理 Nginx 服务。

1.下载基础镜像

下载一个Nginx镜像的镜像基础centos镜像

docker pull centos

2.建立工作目录

mkdir nginx
cd nginx

3.编写Dockerfile文件

可以根据nginx安装到编译的过程来写Dockerfile文件

在nginx目录下执行

vim Dockerfile

FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
RUN curl -o /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum install -y wget  proc-devel net-tools gcc gcc-c++ zlib zlib-devel make openssl-devel
RUN wget http://nginx.org/download/nginx-1.24.0.tar.gz
RUN tar zvxf nginx-1.24.0.tar.gz
RUN cd nginx-1.24.0 && ./configure --prefix=/usr/local/nginx && make && make install
EXPOSE 80
EXPOSE 443
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

4.便携执行脚本内容

vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

5.生成镜像

 docker build -t nginx:mynginx .

1.docker build:这是 Docker 的命令,用于根据指定的 Dockerfile 构建一个新的镜像。

2.-t nginx:mynginx:这是为生成的镜像指定一个名称和标签。

3.nginx 是镜像的名称。4.mynginx 是镜像的标签。使用这种方式可以方便管理不同版本的镜像。

  • .:**表示当前目录是构建上下文,这个目录下必须包含 Dockerfile 文件。Docker 会根据这个 Dockerfile 中的指令来构建镜像。
构建过程

在你提供的输出中,可以看到构建过程的各个阶段:

加载构建定义:Docker 读取 Dockerfile 的内容。

加载基础镜像:从 Docker Hub 获取 centos:7 的元数据。

执行 RUN 指令:

  • 清理默认的 yum 源。
  • 添加阿里云的 yum 源。
  • 安装必要的包(如 wget, gcc, zlib 等)。
  • 下载 Nginx 的源代码包。
  • 解压 Nginx 包。
  • 编译并安装 Nginx。
  • 导出镜像:将构建的内容导出为一个新的镜像,命名为 nginx:mynginx。

6.启动容器并测试

[root@localhost nginx]# docker run -d --name nginx01 -P  nginx:mynginx                                                  
f1489d3891a946dd667c11ac73fd588d5dd63021fbc89062cc152b33d24004d7

docker run:这是 Docker 的基本命令,用于创建并启动一个新容器。

-d:表示以“分离模式”(detached mode)运行容器。容器将在后台运行,而不是在当前终端中输出日志。

--name nginx01:为新创建的容器指定一个名称 nginx01。这样可以方便后续管理和引用该容器,例如停止、启动或删除容器时使用该名称。

-P:自动将容器的端口映射到主机上的随机可用端口。Docker 会将容器内部的端口(例如 Nginx 默认的 80 端口)映射到主机的一个随机端口上,这样可以通过主机的这个随机端口访问容器内的服务。

nginx:mynginx:指定要使用的镜像及其标签。这里的 nginx 是镜像名称,mynginx 是镜像的标签。它表示你要运行的是名为 nginx 的镜像的 mynginx 版本。

7. 查看端口状态信息

查使用以下命令查看正在运行的容器及其端口状态:

docker ps

你将看到类似以下的输出:

[root@localhost nginx]# docker ps
CONTAINER ID   IMAGE           COMMAND                   CREATED         STATUS         PORTS                                                                                NAMES
c99a84f4c5f4   nginx:mynginx   "/usr/local/nginx/sb…"   3 seconds ago   Up 2 seconds   0.0.0.0:32769->80/tcp, :::32769->80/

8进行访问测试

现在,你可以通过主机的随机端口访问 Nginx 服务。例如,如果输出中显示 32769,则可以在浏览器中访问 http://localhost:32769 来测试 Nginx 是否正常运行。

进行访问测试

总结

通过以上步骤,我们成功地在 Docker 中构建并运行了一个 Nginx 容器。这一过程涵盖了从下载基础镜像、创建工作目录,到编写 Dockerfile 和启动容器的完整流程。以下是一些关键点的总结:

  1. 基础镜像的选择:我们选择了 CentOS 作为基础镜像,确保了与大多数 Linux 系统的兼容性,同时也为后续安装 Nginx 提供了一个稳定的环境。
  2. Dockerfile 的编写:通过精心设计的 Dockerfile,我们能够自动化安装 Nginx 及其依赖项,简化了手动配置的复杂性。这种方法不仅提高了构建的效率,还减少了人为错误的可能性。
  3. 容器化的优势:使用 Docker 运行 Nginx 使得服务的部署和管理变得更加灵活。容器可以快速启动和停止,便于进行版本控制和环境隔离。
  4. 可扩展性和维护性:通过这种容器化的方式,后续的扩展和维护变得更加简单。无论是增加新的功能,还是进行性能优化,都可以通过更新 Dockerfile 和重建镜像来实现,而不影响现有的服务。
  5. 快速访问和测试:通过映射容器端口到主机的随机端口,我们能够方便地访问 Nginx 服务,快速进行测试和验证。这一特性使得开发人员可以在本地环境中进行高效的调试。

总之,这种方法不仅能够帮助我们快速部署 Nginx 服务,同时也为后续的扩展和维护提供了便利。希望本教程对你有所帮助,激励你在项目中使用 Docker 和 Nginx,提升开发和运维的效率。

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

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

相关文章

责任链模式实现规则校验

1、项目中责任链模式实战 我们使用责任链模式实现对订单中参数的校验,首先校验订单id是否为空,然后校验下单人是否为空,最后检验收获地址是否为空。业务的流程图如下所示: 针对上述的业务,我们使用责任链的模式来实现…

后端接收数组,集合类数据

文章目录 一. 请求行Path参数(不建议)二.数组接收(不建议)三.List集合接收(建议)四. GET请求既包含请求体又包含请求行 一. 请求行Path参数(不建议) DeleteMapping("/{ids}&quo…

面试干货|自动化测试中常见面试题

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 “ 今天我给大家介绍一些python自动化测试中常见的面试题,涵盖了Python基础、测试框架、测试工具、测试方法等方面的内容,希望能够帮助…

PyO3:一个Rust与Python无缝交互的工具,用Rust打造高性能Python应用

PyO3 是一个强大的工具,它为 Rust 开发者提供了一种与 Python 世界无缝交互的方式。无论你想用 Rust 编写 Python 模块,还是将 Python 集成到 Rust 程序中,PyO3 都能满足你的需求。 PyO3 的优势: 高效便捷: PyO3 允许你…

光伏发电量估算有多重要?如何分析?

光伏发电量的准确估算不仅是项目规划、投资决策的关键依据,也是后续运维管理、效益评估的基础。 一、光伏发电量估算的重要性 1、项目规划与投资决策:准确的发电量预测能够帮助投资者评估项目的经济可行性,包括投资回报率、成本回收期等关键…

基于YOLOv8+LSTM的商超扶梯场景下行人安全行为姿态检测识别

基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别 手扶电梯 行为识别 可检测有人正常行走,有人 跌倒,有人逆行三种行为 跌倒检测 电梯跌倒 扶梯跌倒 人体行为检测 YOLOv8LSTM。 基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别&#xf…

uni-app安装插件

1.通过插件市场安装https://ext.dcloud.net.cn 打开HBuilderX编辑器。 点击菜单栏中的“工具”->“插件安装”。 这里会看到已安装插件和安装新插件两个选项卡,点击安装新插件, 能看到一些核心插件,如果所需要的插件在核心插件里面有&…

服务器数据恢复—raid5阵列热备盘上线失败导致阵列崩溃的数据恢复案例

服务器磁盘阵列数据恢复环境: 服务器中有两组分别由4块SAS硬盘组建的raid5磁盘阵列,两组raid5阵列划分LUN,组成LVM结构,格式化为EXT3文件系统。 服务器磁盘阵列故障: 服务器中一组raid5阵列中有一块硬盘离线&#xff…

【学习笔记】SSL/TLS证书安全机制之证书透明

1、概念 CT - Certificate Transparency,证书透明 2、Trying to Solve 如果意外的 CA 为我们的域名颁发证书,我们是不可见,这就是证书透明(CT)要解决的问题 3、How CT Works 任何CA机构颁发的所有证书的公共登记处&…

【Git使用】删除Github仓库中的指定文件/文件夹

前言: 上篇文章带大家上传了第一个项目至github,那要是想删除仓库中的指定文件夹怎么办?在Github中 仓库是无法通过鼠标操作直接删除文件和文件夹的,那只能通过 git 命令来执行删除操作。接下来就带大家进行操作。 详细步骤: 一…

语音识别与语音控制的原理介绍

硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>10)/Ubuntu(>20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂…

论文阅读与分析:Few-Shot Graph Learning for Molecular Property Prediction

论文阅读与分析:Few-Shot Graph Learning for Molecular Property Prediction 论文地址和代码地址1 摘要2 主要贡献3 基础知识Meta Learning1 介绍2 学习算法Step 1: What is learnable in a learning algorithm?Step 2:Define loss function for learn…

【线性回归模型】

线性回归模型 创建一些带标签的数据集𝐷 {(𝒙1, 𝑦1) , (𝒙2, 𝑦2 ), … , (𝒙𝑚, 𝑦𝑚) } x为特征,映射到对应的标签y,再引入偏置b 线性回归模…

POI操作EXCEL增加下拉框

文章目录 POI操作EXCEL增加下拉框 POI操作EXCEL增加下拉框 有时候通过excel将数据批量导入到系统,而业务操作人员对于一些列不想手动输入,而是采用下拉框的方式来进行选择 采用隐藏sheet页的方式来进行操作 String sheetName "supplier_hidden_s…

如何不终止容器退出Docker Bash会话

如何不终止容器退出Docker Bash会话 💖The Begin💖点点关注,收藏不迷路💖 当通过docker exec进入Docker容器的bash会话后,如果想退出但不停止容器,可以使用快捷键组合: 按下Ctrl+P然后紧接着按下Ctrl+Q。 这个操作会让你从bash会话中“分离”出来,但容器会继续运行…

【重学 MySQL】三十六、MySQL 其他函数

【重学 MySQL】三十六、MySQL 其他函数 FORMAT(value,n)CONV(value,from,to)INET_ATON(ipvalue)INET_NTOA(value)BENCHMARK(n,expr)CONVERT(value USING char_code) MySQL中有些函数无法对其进行具体的分类,但是这些函数在MySQL的开发和运维过程中也是不容忽视的。 …

磁盘存储简介

硬盘 磁盘的内部结构及原理分区表磁盘阵列 磁盘的内部结构及原理 磁盘的内部结构及原理 https://blog.csdn.net/xiaofeng_yang/article/details/138598159详细了解硬盘的工作原理 https://www.bilibili.com/video/BV1iT411o7sW?vd_source17ec636d673142d7ce4f4250839f49fe 盘…

1.3 等价类划分法

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 单功能2 等价划分法3 测试步骤3.1 分析需求3.2 设计测试点3.3 将测试点转为可执行用例文档3.4 执行测试3.5 缺陷管理 前言 在现代软件开发中,确保核心功能的有效性…

一个手机号注册3个抖音号的绿色方法?

下面这是我注册的新账号,显示未实名,在手机号这里显示辅助手机号绑定,手机号绑定这里显示未绑定。如果你需要矩阵,那么,还需要设置好头像,以及介绍,这些都可以正常设置。 再好的方法&#xff0c…

Docker UI强大之处?

DockerUI是一款由国内开发者打造的优秀Docker可视化管理工具。它拥有简洁直观的用户界面,使得Docker主机管理、集群管理和任务编排变得轻松简单。DockerUI不仅能展示资源利用率、系统信息和更新日志,还提供了镜像管理功能,帮助用户高效清理中…