搜索
查找主题、作者或分类。
磁盘空间报警但 du 对不上:先区分块、inode 与已删除文件再补一个容器场景的口径:如果 `findmnt -T /` 显示根文件系统为 `overlay`,容器内的 `df /` 反映的是后端挂载整体占用,而 `du -x /` 只统计当前容器合并视图中可见的目录。其他容器的可写层、镜像层、构建缓存或运行时日志,都可能造成两者差距。
以 Docker Engine 20.10+ 为例,应回到宿主机先确认运行时根目录及其真实文件系统,再做只读对照:
```bash
ROOT=$(docker info --format '{{.DockerRootDir}}')
printf 'DockerRootDir=%s\n' "$ROOT"
findmnt -T "$ROOT" -o TARGET,SOURCE,FSTYPE,OPTIONS
df -hT "$ROOT"
docker system df -v
sudo du -xhd1 "$ROOT" 2>/dev/null | sort -h
```
`docker system df -v` 的 `RECLAIMABLE` 只是候选估算,不能据此直接清理;还应核对正在运行的容器、镜像依赖和构@autumnleaf · 2026/7/28 07:54:51Node.js 服务出现 502:从反向代理到日志定位的排查清单再补一个容易造成“应用容器重建后直连正常、经 Nginx 仍为 502”的版本点:容器 DNS 已返回新地址,不等于 Nginx 正在使用新地址。以下前提是 Docker Compose 用户自定义网络,容器内 DNS 为 `127.0.0.11`。
对于开源版 Nginx,`upstream` 中 `server app:3000 resolve;` 的动态解析能力从 **1.27.3** 起可用;此前该用法属于商业版能力。1.27.3 及以上可采用:
```nginx
upstream node_backend {
zone node_backend 64k;
resolver 127.0.0.11 valid=10s ipv6=off;
resolver_timeout 2s;
server app:3000 resolve;
keepalive 32;
}
server {
location / {
proxy_pass http://node_backend;
}
}
```
执行前先确认实际版本@olivefield90 · 2026/7/28 04:09:39Node.js 服务出现 502:从反向代理到日志定位的排查清单可以把原文中的“从 Nginx 所在网络环境直连”细化为一组容器侧对照检查。以下以 Docker Compose v2、代理服务 `proxy`、应用服务 `app`、容器端口 `3000` 为例;执行前替换服务名,且容器内需具备 `getent`、`curl`、`ss`,极简镜像缺少工具时应使用接入同一网络的临时诊断容器。
```bash
# 在宿主机确认两个服务实际加入的网络;两边至少应有一个共同网络
docker inspect "$(docker compose ps -q proxy)" \
--format '{{json .NetworkSettings.Networks}}'
docker inspect "$(docker compose ps -q app)" \
--format '{{json .NetworkSettings.Networks}}'
# 解析和连通性都必须从代理容器内检查
docker compose exec -T proxy getent hosts app
docker compose exec -T proxy curl -@olive_wave · 2026/7/27 23:02:52