如何通过Docker部署Nginx服务

 更新时间:2025年11月12日 10:43:55   作者:MatrixExplore  
本文阐述的Docker部署Nginx方案,核心在于通过目录挂载实现数据持久化,既保留了容器化部署的轻量特性,又解决了配置与数据的管理难题,本文将详细介绍如何通过Docker部署 Nginx 1.24.0 版本,并实现配置文件、日志和网站内容的持久化管理,感兴趣的朋友一起看看吧

引言

在现代应用部署中,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 daemon 配置和故障排除过程

    Docker daemon 配置和故障排除过程

    这篇文章主要介绍了Docker daemon 配置和故障排除过程,具有很的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Docker简单安装与应用入门教程

    Docker简单安装与应用入门教程

    这篇文章主要介绍了Docker简单安装与应用,结合实例形式分析了Docker常见的安装、应用构建、终端访问等操作相关实现技巧与注意事项,需要的朋友可以参考下
    2018-06-06
  • 解决docker pull镜像速度慢的问题的方法

    解决docker pull镜像速度慢的问题的方法

    本篇文章主要介绍了解决docker pull镜像速度慢的问题的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • docker 中配置 eureka的方法

    docker 中配置 eureka的方法

    这篇文章主要介绍了docker 中配置 eureka的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • docker CPU限制的实现

    docker CPU限制的实现

    这篇文章主要介绍了docker CPU限制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Docker部署Java应用的完整流程与实战分享

    Docker部署Java应用的完整流程与实战分享

    这篇文章主要介绍了Docker部署Java应用的完整流程与实战技巧,我将从 Docker 部署 Java 应用的基础准备开始,详细阐述部署流程、优化方法以及生产实践,为你提供全面的技术方案和应用实例,需要的朋友可以参考下
    2025-06-06
  • Docker常见命令介绍

    Docker常见命令介绍

    这篇文章介绍了Docker中的常见命令,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • Docker部署ElasticSearch和ElasticSearch-Head的实现

    Docker部署ElasticSearch和ElasticSearch-Head的实现

    这篇文章主要介绍了Docker部署ElasticSearch和ElasticSearch-Head的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • docker中的load和save镜像重命名介绍

    docker中的load和save镜像重命名介绍

    使用docker save保存镜像时若仅用IMAGEID,加载后镜像名会显示为<none>,因未包含REPOSITORY和TAG信息,解决方法:加载后用docker tag命令手动指定新名称和标签
    2025-09-09
  • docker daemon远程连接设置详解

    docker daemon远程连接设置详解

    本篇文章主要介绍了docker daemon远程连接设置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04

最新评论