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

devtools/2024/12/22 13:44:45/

 

🏡作者主页:点击! 

🐧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 DockerfileFROM 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.ppmy.cn/devtools/114682.html

相关文章

使用 VSCode 在 Python 中创建项目环境

了解如何管理 Python 项目的不同环境,欢迎来到雲闪世界。 添加图片注释,不超过 140 字(可选) 介绍 创建数据科学项目非常简单。如今,有了众多资源,您只需选择开发工具并启动项目即可。 除了多个人工智能机…

基于SpringBoot的档案管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的档案管理系统,java项目…

蓝桥杯-STM32G431RBT6(解决LCD与LED引脚冲突的问题)

一、LCD与LED为什么会引脚冲突 LCD与LED引脚共用。 网上文章是在LCD_WriteRAM、LCD_WriteRAM_Prepare、LCD_WriteReg中添加,但问题并没有解决。 二、使用步骤 在如下函数中加入uint16_t tempGPIOC->ODR; GPIOC->ODRtemp; LCD_Init(); void LCD_C…

怎么优化服务器的软件配置?

优化服务器的软件配置对于提升系统性能、稳定性和安全性至关重要。通过合理的配置、更新和维护,可以显著提升服务器的效率和响应速度。 Web服务器优化: 使用适当的Web服务器(如Nginx、Apache),并根据需求调整配置参数。 例如,Ngin…

极狐GitLab 重要安全版本:17.3.3, 17.2.7, 17.1.8, 17.0.8, 16.11.10

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…

Miracast/WifiDisplay开发相关的深入调研分析-android投屏实战开发

Miracast/WifiDisplay概念介绍 Miracast Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的消费性电子产品(又称3C设备)可透过无线方式分享视频画面,例如…

【算法】滑动窗口—找所有字母异位词

“找到字符串中所有字母异位词”的难度为Medium,看一下题目: 给定一个字符串 S 和一个非空字符串 T,找到 S 中所有是 T 的字母异位词的子串,返回这些子串的起始索引。 所谓的字母异位词,其实就是全排列,原题…

【计算机网络 - 基础问题】每日 3 题(二)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…