Docker部署Nginx服务的两种实现方法

 更新时间:2025年09月04日 11:06:43   作者:MatrixExplore  
本文介绍了使用Docker部署Nginx服务的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

引言

在现代应用部署中,Docker 凭借其轻量、隔离、可移植的特性成为主流选择。Nginx 作为高性能的 Web 服务器和反向代理,结合 Docker 可以快速实现环境一致性和部署自动化。本文将详细介绍如何通过 Docker 部署 Nginx 1.24.0 版本,并实现配置文件、日志和网站内容的持久化管理。

准备工作

在开始部署前,请确保你的环境已满足以下条件:

  • 已安装 Docker 引擎(推荐版本 20.10 及以上)
  • 具备基本的 Linux 命令操作能力
  • 拥有服务器的 root 或 sudo 权限
  • 可通过以下命令验证 Docker 是否正常运行
docker --version  # 查看 Docker 版本
systemctl status docker  # 检查 Docker 服务状态

方法1:docker方式部署

步骤一:拉取Nginx镜像

Docker 镜像作为容器的模板,我们首先需要从 Docker Hub 拉取官方的 Nginx 镜像。可以指定一个具体的版本,也可以默认拉取latest。

docker pull nginx:1.26.0

拉取完成后,可通过docker images命令查看本地镜像列表,确认nginx:1.26.0 已存在:

docker images

步骤二:创建宿主机目录结构

为了实现 Nginx 配置、日志和网站内容的持久化,避免容器删除后数据丢失,我们需要在宿主机创建对应的目录结构。推荐的目录规划如下:

  • 创建主目录
mkdir -p /opt/nginx
  • 分别创建配置、日志和网站内容目录
mkdir -p /opt/nginx/conf    # 存放 Nginx 主配置文件
mkdir -p /opt/nginx/conf/conf.d  # 存放虚拟主机配置
mkdir -p /opt/nginx/log     # 存放 Nginx 日志
mkdir -p /opt/nginx/html    # 存放网站静态文件

步骤三:获取容器内的默认配置文件

Nginx容器内置了默认的配置文件,但这些文件存在于容器内部。为了便于后续自定义配置,我们需要先通过一个临时容器提取这些文件到宿主机的目录中。

  • 启动临时 Nginx 容器,执行以下命令创建并启动一个临时的 Nginx 容器:
docker run --name nginx -d nginx:1.26.0
# --name nginx:为容器指定名称
# -d:以守护进程模式运行
  • 复制容器内的配置文件到宿主机
    通过 docker cp 命令将容器内的关键文件复制到之前创建的目录中。
docker cp nginx:/etc/nginx/nginx.conf /opt/nginx/conf/nginx.conf
  • 复制虚拟主机配置目录 conf.d
docker cp nginx:/etc/nginx/conf.d /opt/nginx/conf/
  • 复制默认网站内容目录html
docker cp nginx:/usr/share/nginx/html /opt/nginx/
  • 删除临时容器
    配置文件已提取完成,临时容器不再需要,执行以下命令停止并删除容器:
docker stop nginx
docker rm nginx

步骤四:启动正式的 Nginx 容器

基于宿主机的持久化目录,启动正式的 Nginx 容器,通过 -v 参数实现目录挂载:

docker run --restart=always -d --name nginx \
-p 80:80 \
-v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/nginx/log:/var/log/nginx \
-v /opt/nginx/html:/usr/share/nginx/html \
-v /mnt/volumn:/mnt/volumn \
nginx:1.26.0

命令参数说明:
–restart=always:设置容器随 Docker 服务自动启动(避免服务器重启后容器未运行)
-d:后台运行容器
–name nginx:指定容器名称为 nginx
-p 80:80:端口映射(宿主机 80 端口:容器内 80 端口,外部可通过服务器 IP:80 访问)
-v 目录挂载:
配置文件挂载:确保宿主机修改配置后无需重启容器即可生效(需执行 nginx -s reload)
日志挂载:便于在宿主机直接查看和分析 Nginx 日志
网站内容挂载:直接在宿主机修改 /opt/nginx/html 目录下的文件即可更新网站内容
/mnt/volumn:/mnt/volumn:额外 挂载自定义目录(可根据实际需求添加或删除,例如用于存放静态资源)

步骤五:验证 Nginx 容器运行状态

容器启动后,通过以下命令确认是否正常运行:

docker ps | grep nginx

查看容器详细日志(排查启动失败问题)

docker logs nginx

若容器正常运行,可通过浏览器访问服务器的 80 端口,应显示Nginx的默认欢迎页面

方法2:docker-compose方式部署

  • 拉取镜像
docker pull nginx:1.26.0
  • 建立自定义网络
docker network ls
docker network create --driver bridge my_switch
  • 编写docker-compose.yml文件
services:
  nginx: # 服务的名称 自定义
    image: nginx:1.26.0
    container_name: nginx # 容器名称
    restart: always
    ports:
      - "80:80"
    volumes:
      - /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /opt/nginx/html:/usr/share/nginx/html
      - /opt/nginx/conf/conf.d:/etc/nginx/conf.d
      - /opt/nginx/log:/var/log/nginx
      - /mnt/volume:/mnt/volume
    networks:
      - my_switch
networks:
  my_switch:
    external: true  # 指明该网络是外部定义和管理的
  • 启动容器
    在docker-compose.yml文件所在的目录下,打开终端或命令行界面,运行以下命令
docker-compose up -d

结语

本文阐述的Docker部署Nginx方案,核心在于通过目录挂载实现数据持久化,既保留了容器化部署的轻量特性,又解决了配置与数据的管理难题。这种模式在实际生产环境中极具实用价值。当需要迁移服务时,只需打包宿主机的 /opt/nginx目录与启动命令,即可在新环境快速复现相同的运行实例。

本文还分别介绍了docker原生和docker-compose工具两种方式部署nginx的方法。个人比较推荐后者,docker-compose方式使得docker的运维内容都以yaml的方式保存下来,使得后期运维更加清晰明了,但docker原生的方式可以让操作者更加熟悉docker底层的逻辑,也是一种加深学习映像的方式。

到此这篇关于Docker部署Nginx服务的两种实现方法的文章就介绍到这了,更多相关Docker部署Nginx服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 部署 Microsoft SQL Server 完全指南

    Docker 部署 Microsoft SQL Server 完全指南

    本文详细介绍如何使用Docker快速部署Microsoft SQL Server,提供两种主流方式,两种方式都包含了数据持久化、资源限制等生产环境所需的配置,并提供了详细的参数说明和常见问题解决方法,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • 如何下载docker日志到本地

    如何下载docker日志到本地

    这篇文章主要介绍了如何下载docker日志到本地问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • docker如何查询指定名字的容器id

    docker如何查询指定名字的容器id

    要查询指定名字的Docker容器ID,可以使用命令 docker ps -a --filter "name=CONTAINER_NAME" -q,该命令将返回指定名称的容器ID,如果存在多个相同名称的容器,则返回所有这些容器的ID
    2025-03-03
  • 查看docker是否处于启动状态的方法详解

    查看docker是否处于启动状态的方法详解

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,本文主要给大家介绍了查看docker是否处于启动状态的方法,需要的朋友可以参考下
    2024-06-06
  • Docker可视化ui管理工具Portainer安装及使用解析

    Docker可视化ui管理工具Portainer安装及使用解析

    这篇文章主要介绍了Docker可视化ui管理工具Portainer安装及使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • docker形式简易部署kibana的过程

    docker形式简易部署kibana的过程

    这篇文章给大家介绍使用docker部署kibana服务的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • docker容器中登陆并操作postgresql的实现

    docker容器中登陆并操作postgresql的实现

    本文主要介绍了docker容器中登陆并操作postgresql的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • Docker命令行与守护进程的交互方法

    Docker命令行与守护进程的交互方法

    这篇文章主要介绍了Docker命令行与守护进程的交互方法的相关资料,需要的朋友可以参考下
    2017-06-06
  • docker-compose中的环境变量问题

    docker-compose中的环境变量问题

    这篇文章主要介绍了docker-compose中的环境变量问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Linux服务器安装Docker,启动失败问题的解决

    Linux服务器安装Docker,启动失败问题的解决

    这篇文章主要介绍了Linux服务器安装Docker,启动失败问题的解决方案,具有很好的参考价值,希望对大家有所帮助。
    2023-04-04

最新评论