
玩服务器一段时间后,特别是部署了各种重型 AI 环境、复杂的 Web 框架或影音刮削工具后,硬盘空间经常会不知不觉地被吞噬殆尽,甚至遇到服务莫名其妙卡死、镜像拉取失败等情况。当 NAS 或云服务器突然亮起红灯时,掌握一些精准的诊断和清理命令就显得尤为重要了。
这篇备忘录整理了日常折腾 Docker 和 Linux 宿主机时最常用的命令,不仅帮你揪出吃掉几十个 G 硬盘空间的“元凶”,还收录了关键时刻救命的故障排查与修复指令。建议收藏,随时复制。
这部分是每天都会用到的高频命令,主要用于查看和管理容器状态。
bash# 查看正在运行的容器
docker ps
# 查看所有容器(包括已停止的、运行失败的)
docker ps -a
# 启动 / 停止 / 重启容器
docker start <容器名或ID>
docker stop <容器名或ID>
docker restart <容器名或ID>
# 删除特定容器 (强制删除加 -f)
docker rm <容器名或ID>
docker rm -f <容器名或ID>
# 实时查看容器运行日志 (排错必备,按 Ctrl+C 退出)
docker logs -f <容器名或ID>
# 进入正在运行的容器内部 (通常是 bash 或 sh)
docker exec -it <容器名或ID> /bin/bash
当发现 Docker 占用了大量空间或系统极度卡顿时,不要盲目乱删,用这几招精准定位。
有时没正确映射宿主机目录(Bind Mount),下载的文件全塞进容器内部了。
bash# 查看容器大小 (注意输出结果的最后一列 SIZE)
docker ps -as
💡 提示:例如
296MB (virtual 1.91GB),括号外的296MB是容器运行后产生的真实垃圾数据。如果数字极大,说明挂载配置漏了。
一键查找 Docker 真实存储路径,并按大小降序排列。
bashdu -sh $(docker info -f '{{.DockerRootDir}}')/* | sort -rh
💡 提示:
overlay2目录庞大通常是拉取了太多庞大的基础镜像;containers目录极大通常是某个容器的日志失控了(未限制日志大小)。
系统卡顿、Load 飙升时,看看是谁在吃资源。
bashdocker stats
确认空间被无用数据占用后,安全进行大面积清理,瞬间释放十几 G 甚至几十 G 的空间。
清理所有已停止的容器、未使用的网络以及“悬空”的无用镜像。
bashdocker system prune
⚠️ 注意: 确保重要数据已挂载到宿主机。此命令会干掉所有未运行的容器、所有未被使用的旧镜像和游离的无用数据卷。
bashdocker system prune -a --volumes
如果系统磁盘已经爆满,Docker 守护进程卡死连 prune 命令都无法执行时,直接物理清空底层数据(所有容器和镜像都会消失,需重新拉取部署)。
bashsudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
遇到 Job for docker.service failed 或无法拉取镜像时的救命命令。
Docker 启动失败时,千万别瞎猜,直接看日志找原因。
bash# 查看 Docker 服务的状态及最近几行报错
systemctl status docker.service
# 查看详细的启动日志 (翻看是否提示 No space left 或 端口冲突)
journalctl -u docker.service -n 50 --no-pager
💡 常见坑点:如果日志提示无法写入 PID 或 Socket,通常是因为 Linux 的内存临时分区
/run爆满了(使用du -sh /run/*检查并重启系统即可)。
遇到 no such host 或 timeout 时,修改或添加镜像加速源。
bash# 编辑配置文件
sudo nano /etc/docker/daemon.json
填入以下内容(选填稳定可用的镜像源):
json{
"registry-mirrors": [
"[https://docker.m.daocloud.io](https://docker.m.daocloud.io)",
"[https://dockerproxy.com](https://dockerproxy.com)"
]
}
保存后重载守护进程并重启 Docker:
bashsudo systemctl daemon-reload sudo systemctl restart docker
多容器编排(如一键部署 Web 后端、MySQL、Redis 全家桶)时必备。
bash# 在含有 docker-compose.yml 的目录下执行:
# 后台启动并自动构建镜像 (首次部署或修改 Dockerfile 后常用)
docker compose up -d --build
# 停止并移除容器、网络 (保留数据卷)
docker compose down
# 仅重启 Compose 管理的所有服务
docker compose restart
脱离了 Docker,宿主机的健康才是底线。这里整理了平时排查网络、揪出性能“内鬼”以及管理大文件的必备神技。
如果容器较多且限制了内存,总和接近服务器物理内存上限时系统极易崩溃。强烈建议配置 Swap(虚拟内存)。
bash# 一键创建 2GB 虚拟内存的命令组合
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 使其开机永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
系统毫无征兆地报错时,第一件事就是查磁盘。找出隐藏的日志或废弃的 AI 模型文件。
bash# 查看系统整体磁盘使用情况 (第一眼先看这个)
df -h
# 揪出当前目录下各个文件夹的大小 (非常适合在根目录 / 下执行排查)
du -sh * | sort -rh
# 全盘地毯式搜索:找出大于 500MB 的所有文件
find / -type f -size +500M -exec ls -lh {} \;
面板显示“运行堵塞”时,用这些命令看穿一切。
bash# 查看内存和 Swap 虚拟内存的使用情况
free -m
# 终端里的任务管理器 (按 P 按 CPU 排序,按 M 按内存排序)
# 推荐使用 htop,如果没有可以通过 apt install htop 安装
top
htop
配置反向代理或内网穿透时,端口冲突或网络不通是最常见的坑。
bash# 查看本机所有正在监听的端口及对应的程序 (查端口占用神器)
sudo ss -tulnp
# 或者使用老牌命令
sudo netstat -tulnp
# 测试本机是否能连通外部网络 (排查代理配置或防火墙)
curl -I [https://www.google.com](https://www.google.com)
# 检查某个域名目前的 DNS 解析 IP
ping blog.zym588.space
在服务器上编译源码或下载巨大权重文件时,最怕 SSH 突然断开。
bash# 查看系统所有正在运行的服务
systemctl list-units --type=service --state=running
# 杀掉某个卡死的进程 (先用 top 查出 PID,慎用 -9 强制击杀)
kill -9 <PID>
# 神器 tmux:开启一个后台终端,断网也不怕任务中断
tmux
# (在 tmux 窗口中按 Ctrl+b 然后按 d 挂到后台,下次输入 tmux attach 恢复)
# 稳如老狗的文件同步 (支持断点续传,备份网站数据极佳)
# 将本地目录同步到远程服务器
rsync -avzP /本地路径/ root@服务器IP:/远程路径/
本文作者:小转圈
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!