必须挂载日志路径至宿主机或命名卷,否则容器销毁日志即丢失;推荐用命名卷(如nginx_logs)避免权限问题;若用宿主机目录,须预设uid 101权限并加selinux标记。

要让 Nginx 容器的日志不随容器销毁而丢失,必须把容器内日志路径(/var/log/nginx)挂载到宿主机或 Docker 数据卷中。直接运行容器却不挂载,日志就只存在容器可写层里,一删容器全没了。
为什么不能只用 -v /host/logs:/var/log/nginx 简单挂载?
因为 Nginx 启动时会尝试写入 access.log 和 error.log,如果宿主机对应目录为空,容器内日志文件会变成空文件或权限异常;更严重的是,若宿主机目录已存在但属主不是 nginx 用户(UID 101),容器可能因无写权限而启动失败或日志静默丢失。
推荐做法:用命名卷(named volume)管理日志
命名卷由 Docker 自动管理权限和生命周期,避免手动处理用户 UID、目录初始化等问题,更适合生产环境。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 创建专用日志卷:
docker volume create nginx_logs - 启动容器时挂载:
docker run -d --name my-nginx -v nginx_logs:/var/log/nginx -p 80:80 nginx:1.25.3 - 查看日志内容:
docker volume inspect nginx_logs找到挂载路径,再用ls或tail -f查看实际日志文件
如果坚持用宿主机目录挂载,需提前准备
适用于开发调试或需要直接编辑/归档日志的场景,但务必做三件事:
- 创建宿主机目录并设对权限:
mkdir -p /data/nginx/logs && chown -R 101:101 /data/nginx/logs(Nginx 官方镜像默认用 UID/GID 101 运行) - 确保目录为空或已包含正确权限的
access.log、error.log(可先启一个临时容器复制出来) - 挂载命令中加
:z(SELinux 环境)或:Z(严格模式)标记,如:-v /data/nginx/logs:/var/log/nginx:z
进阶:分离访问日志与错误日志路径(可选)
Nginx 配置支持自定义日志路径,可在挂载配置文件的同时,把不同日志指向不同卷,便于分类采集:
- 在宿主机准备两个卷:
docker volume create nginx_access和docker volume create nginx_error - 修改
nginx.conf中的access_log /var/log/nginx/access.log→access_log /var/log/nginx/access/access.log,同理改error_log - 启动时分别挂载:
-v nginx_access:/var/log/nginx/access -v nginx_error:/var/log/nginx/error










