如何通过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 login和logout的使用

    Docker login和logout的使用

    本文主要介绍了Docker login和logout的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • zabbix监控docker容器状态【推荐】

    zabbix监控docker容器状态【推荐】

    这篇文章主要介绍了zabbix监控docker容器状态的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Docker环境运行Vue项目全过程

    Docker环境运行Vue项目全过程

    这篇文章主要介绍了Docker环境运行Vue项目全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 浅谈Docker安全机制内核安全与容器之间的网络安全

    浅谈Docker安全机制内核安全与容器之间的网络安全

    这篇文章主要介绍了Docker安全机制内核安全与容器之间的网络安全,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • centos7使用yum实现快速安装Docker环境

    centos7使用yum实现快速安装Docker环境

    这篇文章主要为大家详细介绍了centos7使用yum实现快速安装Docker环境的详细教程,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • Docker 部署 Nginx详细攻略

    Docker 部署 Nginx详细攻略

    Nginx 是一款轻量级、高性能的 HTTP 服务器与反向代理服务器,也是当前企业级 Web 服务中最常用的组件之一,接下来通过本文给大家介绍Docker部署Nginx详细攻略,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • docker安装nacos2.2.4图文详解(含:nacos容器启动参数、环境变量、常见问题整理)

    docker安装nacos2.2.4图文详解(含:nacos容器启动参数、环境变量、常见问题整理)

    文章详细介绍了如何在Docker中下载、安装和配置Nacos 2.2.4,包括在线和离线安装步骤、使用不同网络模式(如Host模式)以及一些常见问题的解决方法,感兴趣的朋友跟随小编一起看看吧
    2025-02-02
  • Docker MySQL每天定时自动备份的实现方法

    Docker MySQL每天定时自动备份的实现方法

    本文主要介绍了Docker MySQL每天定时自动备份的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Linux下Docker版本升级的保姆级教程

    Linux下Docker版本升级的保姆级教程

    之前docker直接使用centos的yum -y install docker安装的,安装源的版本比较老,最近项目计划使用docker的一些新特性,所以需要将docker版本做一下升级,本文详细记录了升级的过程,需要的朋友可以参考下
    2025-08-08
  • docker部署redis的具体实现

    docker部署redis的具体实现

    在开发中,我们经常会遇到使用redis的场景,本文主要介绍了docker部署redis的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06

最新评论