docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker 部署nginx服务

如何通过Docker部署Nginx服务

作者:MatrixExplore

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

引言

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

准备工作

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

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

docker run --name nginx -d nginx:1.26.0
# --name nginx:为容器指定名称
# -d:以守护进程模式运行
docker cp nginx:/etc/nginx/nginx.conf /opt/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /opt/nginx/conf/
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
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 up -d

结语

本文阐述的Docker部署Nginx方案,核心在于通过目录挂载实现数据持久化,既保留了容器化部署的轻量特性,又解决了配置与数据的管理难题。这种模式在实际生产环境中极具实用价值。当需要迁移服务时,只需打包宿主机的 /opt/nginx目录与启动命令,即可在新环境快速复现相同的运行实例。
本文还分别介绍了docker原生和docker-compose工具两种方式部署nginx的方法。个人比较推荐后者,docker-compose方式使得docker的运维内容都以yaml的方式保存下来,使得后期运维更加清晰明了,但docker原生的方式可以让操作者更加熟悉docker底层的逻辑,也是一种加深学习映像的方式。

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

您可能感兴趣的文章:
阅读全文