1、寻找 Nginx 镜像
你可以在 轩辕镜像 中找到 Nginx 镜像页面:
👉 https://xuanyuan.cloud/r/library/nginx
在页面中会看到多种拉取方式,下面我们逐一说明。
2、下载 Nginx 镜像
2.1 使用轩辕镜像登录验证的方式拉取
docker pull docker.xuanyuan.run/library/nginx:latest
2.2 拉取后改名
docker 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:latest
说明:
docker pull
:从轩辕镜像加速拉取镜像docker tag
:将镜像重命名为官方标准名称library/nginx:latest
,后续运行命令更简洁docker rmi
:删除临时镜像标签,避免占用额外存储空间
2.3 使用免登录方式拉取(推荐)
基础拉取命令:
docker pull xxx.xuanyuan.run/library/nginx:latest
带重命名的完整命令:
docker pull x8rgmbsueftaqi.xuanyuan.run/library/nginx:latest \
&& docker tag x8rgmbsueftaqi.xuanyuan.run/library/nginx:latest library/nginx:latest \
&& docker rmi x8rgmbsueftaqi.xuanyuan.run/library/nginx:latest
说明:
免登录方式无需配置账户信息,新手可直接使用;镜像内容与 docker.xuanyuan.run
源完全一致,仅拉取地址不同。
2.4 官方直连方式
若网络可直连 Docker Hub,或已配置轩辕镜像加速器,可直接拉取官方镜像:
docker pull library/nginx:latest
2.5 查看镜像是否拉取成功
docker images
若输出类似以下内容,说明镜像下载成功:
REPOSITORY TAG IMAGE ID CREATED SIZE
library/nginx latest f652ca386ed1 2 weeks ago 142MB
3、部署 Nginx
以下使用已下载的 library/nginx:latest
镜像,提供三种部署方案,可根据场景选择。
3.1 快速部署(最简方式)
适合测试或临时使用,命令如下:
# 启动 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 官方欢迎页。
3.2 挂载目录(推荐方式,适合实际项目)
通过挂载宿主机目录,实现「配置持久化」「日志分离」「网页文件独立管理」,步骤如下:
第一步:创建宿主机目录
# 一次性创建 html(网页)、conf(配置)、logs(日志)三个目录
mkdir -p /data/nginx/{html,conf,logs}
第二步:准备测试网页
# 向 html 目录写入测试内容
echo "Hello from Xuanyuan Nginx!" > /data/nginx/html/index.html
第三步:启动容器并挂载目录
docker 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
3.3 docker-compose 部署(适合企业级场景)
通过 docker-compose.yml
统一管理容器配置,支持一键启动/停止,步骤如下:
第一步:创建 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 -d
补充说明:
- 若需修改配置/网页,直接操作当前目录下的
html
、conf
文件夹即可 - 停止服务命令:
docker compose down
- 查看服务状态:
docker compose ps
4、结果验证
通过以下方式确认 Nginx 服务正常运行:
-
浏览器验证:
访问http://服务器IP
,应显示之前写入的测试内容(Hello from Xuanyuan Nginx!
)或 Nginx 欢迎页。 -
查看容器状态:
docker ps
若
STATUS
列显示Up
,说明容器正常运行。 -
查看容器日志:
以nginx-web
容器为例(若用docker-compose
则为nginx-service
):docker logs nginx-web
无报错信息即表示服务启动正常。
5、常见问题
5.1 访问不到网页?
排查方向:
- 安全组:检查云服务器安全组是否放行 80(HTTP)、443(HTTPS)端口
- 防火墙:检查服务器本地防火墙(如
ufw
或firewalld
)是否开放对应端口ufw
开放端口:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
firewalld
开放端口:sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --add-port=443/tcp --permanent && sudo firewall-cmd --reload
- 端口冲突:执行
netstat -tuln | grep 80
查看 80 端口是否被其他进程占用,若占用需更换宿主机端口(如-p 8080:80
)
5.2 如何启用 HTTPS?
- 准备证书:获取 SSL 证书文件(通常包含
fullchain.pem
证书链和privkey.pem
私钥),放到宿主机目录(如/data/nginx/certs
)。 - 挂载证书目录:在容器启动命令中添加证书挂载参数:
-v /data/nginx/certs:/etc/nginx/certs
- 修改 Nginx 配置:更新
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
5.3 日志文件过大怎么办?
- 方案1:使用 logrotate 切割日志(推荐):
在宿主机创建/etc/logrotate.d/nginx
配置文件,设置日志切割规则(如按天切割、保留 7 天):/data/nginx/logs/*.log {dailyrotate 7compressdelaycompressmissingoknotifemptycreate 0640 root root }
- 方案2:日志收集系统:
配合 ELK Stack(Elasticsearch + Logstash + Kibana)或 Loki 等工具,实现日志集中收集、存储和分析。
5.4 容器内时区不正确?
在启动容器时,通过 -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更好地支撑你的业务需求。