在开始Nginx镜像拉取与部署操作前,我们先简要明确Nginx的核心价值与Docker部署的优势——这能帮助你更清晰地理解后续操作的意义。
Nginx 是一款轻量级、高性能的 HTTP 服务器与反向代理服务器,也是当前企业级 Web 服务中最常用的组件之一。它的核心作用可概括为四大类:
其最大特点是轻量(占用资源少)、稳定(故障率低)、高并发(单实例可支撑数万并发连接),因此成为中小微企业到大型互联网公司的“标配”服务组件。
传统方式部署 Nginx(如通过 yum/apt 安装、源码编译)常面临环境不一致、依赖冲突、配置隔离差、迁移繁琐等问题(例如:开发机上正常运行的 Nginx,到生产服务器因系统库版本不同启动失败;多服务混布时,Nginx 配置错误可能影响其他应用)。而 Docker 部署能完美解决这些痛点,核心优势如下:
docker 命令或 docker-compose 可一键实现 Nginx 启停、日志查看、状态监控(如 docker logs nginx-web 直接看日志),新手也能快速上手。若你的系统尚未安装 Docker,请先一键安装:
一键安装配置脚本(推荐方案): 该脚本支持多种 Linux 发行版,支持一键安装 Docker、Docker Compose 并自动配置轩辕镜像加速源。
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)你可以在 轩辕镜像 中找到 Nginx 镜像页面: 👉 https://xuanyuan.cloud/r/library/nginx
在页面中会看到多种拉取方式,下面我们逐一说明。
docker pull docker.xuanyuan.run/library/nginx:latestdocker pull docker.xuanyuan.run/library/nginx:latest \
&& docker tag docker.xuanyuan.run/library/nginx:latest library/nginx:latest \
&& docker rmi docker.xuanyuan.run/library/nginx:latestdocker pull:从轩辕镜像加速拉取镜像docker tag:将镜像重命名为官方标准名称 library/nginx:latest,后续运行命令更简洁docker rmi:删除临时镜像标签,避免占用额外存储空间基础拉取命令:
docker pull xxx.xuanyuan.run/library/nginx:latest带重命名的完整命令:
docker pull xxx.xuanyuan.run/library/nginx:latest \
&& docker tag xxx.xuanyuan.run/library/nginx:latest library/nginx:latest \
&& docker rmi xxx.xuanyuan.run/library/nginx:latest免登录方式无需配置账户信息,新手可直接使用;镜像内容与 docker.xuanyuan.run 源完全一致,仅拉取地址不同。
若网络可直连 Docker Hub,或已配置轩辕镜像加速器,可直接拉取官方镜像:
docker pull library/nginx:latestdocker images若输出类似以下内容,说明镜像下载成功:
REPOSITORY TAG IMAGE ID CREATED SIZE
library/nginx latest f652ca386ed1 2 weeks ago 142MB以下使用已下载的 library/nginx:latest 镜像,提供三种部署方案,可根据场景选择。
适合测试或临时使用,命令如下:
# 启动 Nginx 容器,命名为 nginx-test
# 宿主机 80 端口映射到容器 80 端口(Nginx 默认端口)
docker run -d --name nginx-test -p 80:80 library/nginx:latest--name nginx-test:为容器指定名称,便于后续管理(如停止、重启)-p 80:80:端口映射,格式为「宿主机端口:容器端口」-d:后台运行容器浏览器访问 http://服务器IP,应显示 Nginx 官方欢迎页。
通过挂载宿主机目录,实现「配置持久化」「日志分离」「网页文件独立管理」,步骤如下:
# 一次性创建 html(网页)、conf(配置)、logs(日志)三个目录
mkdir -p /data/nginx/{html,conf,logs}# 向 html 目录写入测试内容
echo "Hello from Xuanyuan Nginx!" > /data/nginx/html/index.htmldocker run -d --name nginx-web \
-p 80:80 -p 443:443 \ # 映射 HTTP(80) 和 HTTPS(443) 端口
-v /data/nginx/html:/usr/share/nginx/html \ # 网页目录挂载
-v /data/nginx/conf:/etc/nginx/conf.d \ # 配置目录挂载
-v /data/nginx/logs:/var/log/nginx \ # 日志目录挂载
library/nginx:latest宿主机目录 | 容器内目录 | 用途 |
|---|---|---|
/data/nginx/html | /usr/share/nginx/html | 存放网页文件(如 HTML、CSS) |
/data/nginx/conf | /etc/nginx/conf.d | 存放 Nginx 配置文件 |
/data/nginx/logs | /var/log/nginx | 存放访问日志、错误日志 |
新建 Nginx 基础配置文件 /data/nginx/conf/default.conf:
server {
listen 80; # 监听 80 端口(HTTP)
server_name _; # 匹配所有域名(可替换为实际域名,如 example.com)
root /usr/share/nginx/html; # 网页根目录
index index.html; # 默认首页
access_log /var/log/nginx/access.log; # 访问日志路径
error_log /var/log/nginx/error.log; # 错误日志路径
# 处理请求的核心规则
location / {
try_files $uri $uri/ =404; # 尝试访问文件/目录,不存在则返回 404
}
}修改配置文件后,需重启容器使配置生效:
docker restart nginx-web通过 docker-compose.yml 统一管理容器配置,支持一键启动/停止,步骤如下:
version: '3' # 指定 docker-compose 语法版本
services:
nginx:
image: library/nginx:latest # 使用的镜像
container_name: nginx-service # 容器名称
ports:
- "80:80" # HTTP 端口映射
- "443:443" # HTTPS 端口映射
volumes:
- ./html:/usr/share/nginx/html # 网页目录(相对路径,与 yml 同目录)
- ./conf:/etc/nginx/conf.d # 配置目录
- ./logs:/var/log/nginx # 日志目录
restart: always # 容器退出后自动重启(保障服务可用性)在 docker-compose.yml 所在目录执行:
docker compose up -dhtml、conf 文件夹即可docker compose downdocker compose ps通过以下方式确认 Nginx 服务正常运行:
http://服务器IP,应显示之前写入的测试内容(Hello from Xuanyuan Nginx!)或 Nginx 欢迎页。STATUS 列显示 Up,说明容器正常运行。nginx-web 容器为例(若用 docker-compose 则为 nginx-service):
docker logs nginx-web
无报错信息即表示服务启动正常。排查方向:
ufw 或 firewalld)是否开放对应端口ufw 开放端口:sudo ufw allow 80/tcp && sudo ufw allow 443/tcpfirewalld 开放端口:sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --add-port=443/tcp --permanent && sudo firewall-cmd --reloadnetstat -tuln | grep 80 查看 80 端口是否被其他进程占用,若占用需更换宿主机端口(如 -p 8080:80)fullchain.pem 证书链和 privkey.pem 私钥),放到宿主机目录(如 /data/nginx/certs)。default.conf,添加 HTTPS 监听规则:server { listen 443 ssl; # 监听 443 端口(HTTPS) server_name 你的域名; # 替换为实际域名(如 example.com) # 证书路径(容器内路径,对应宿主机 /data/nginx/certs) ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; root /usr/share/nginx/html; index index.html; }docker restart nginx-web/etc/logrotate.d/nginx 配置文件,设置日志切割规则(如按天切割、保留 7 天):/data/nginx/logs/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 root root }在启动容器时,通过 -e 参数设置时区(以上海时区 Asia/Shanghai 为例):
docker run -d -e TZ=Asia/Shanghai \
--name nginx-web \
-p 80:80 -p 443:443 \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
library/nginx:latest至此,你已掌握基于轩辕镜像的Nginx镜像拉取与Docker部署全流程——从镜像下载验证,到不同场景的部署实践,再到问题排查,每个步骤都配备了完整的操作命令和说明。对于初学者而言,建议先从「快速部署」熟悉流程,再尝试「目录挂载」方案理解持久化配置的意义,最后根据需求进阶到「docker-compose」管理。
在实际使用中,若遇到文档未覆盖的问题,可结合docker logs 容器名查看日志定位原因,或参考Nginx官方文档补充学习。随着实践深入,你还可以基于本文基础,进一步探索Nginx的反向代理、负载均衡、HTTPS高级配置等功能,让Nginx更好地支撑你的业务需求。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。