编辑
2026-02-22
技术漫谈
00
请注意,本文编写于 67 天前,最后修改于 48 天前,其中某些信息可能已经过时。

目录

一、 Docker 日常基础操作
二、 Docker 进阶诊断:谁吃掉了硬盘和内存?
1. 查看容器内部偷偷写入的数据
2. 深度剖析 Docker 底层目录占用
3. 实时监控容器资源占用 (CPU/内存)
三、 Docker 终极清理:大扫除与空间释放
1. 官方一键安全清理
2. 强力深度清理 (极其有效)
3. 核弹级清理 (解决磁盘 100% 导致 Docker 死锁)
四、 Docker 服务故障排查与底层修复
1. 查看 Docker 守护进程报错日志
2. 修复镜像拉取失败 (配置国内加速器)
五、 Docker Compose 常用命令
六、 Linux 宿主机生存指南:防坑与自救
1. 防止 OOM 崩溃的 Swap 护航
2. 磁盘与大文件杀手 (告别空间焦虑)
3. 系统性能监控 (抓出吃 CPU 和内存的内鬼)
4. 网络与端口侦查 (排查代理与访问故障)
5. 进程管理与后台挂机 (折腾必备)

Gemini_Generated_Image_uy9x31uy9x31uy9x.png

玩服务器一段时间后,特别是部署了各种重型 AI 环境、复杂的 Web 框架或影音刮削工具后,硬盘空间经常会不知不觉地被吞噬殆尽,甚至遇到服务莫名其妙卡死、镜像拉取失败等情况。当 NAS 或云服务器突然亮起红灯时,掌握一些精准的诊断和清理命令就显得尤为重要了。

这篇备忘录整理了日常折腾 Docker 和 Linux 宿主机时最常用的命令,不仅帮你揪出吃掉几十个 G 硬盘空间的“元凶”,还收录了关键时刻救命的故障排查与修复指令。建议收藏,随时复制。

一、 Docker 日常基础操作

这部分是每天都会用到的高频命令,主要用于查看和管理容器状态。

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 进阶诊断:谁吃掉了硬盘和内存?

当发现 Docker 占用了大量空间或系统极度卡顿时,不要盲目乱删,用这几招精准定位。

1. 查看容器内部偷偷写入的数据

有时没正确映射宿主机目录(Bind Mount),下载的文件全塞进容器内部了。

bash
# 查看容器大小 (注意输出结果的最后一列 SIZE) docker ps -as

💡 提示:例如 296MB (virtual 1.91GB),括号外的 296MB 是容器运行后产生的真实垃圾数据。如果数字极大,说明挂载配置漏了。

2. 深度剖析 Docker 底层目录占用

一键查找 Docker 真实存储路径,并按大小降序排列。

bash
du -sh $(docker info -f '{{.DockerRootDir}}')/* | sort -rh

💡 提示overlay2 目录庞大通常是拉取了太多庞大的基础镜像;containers 目录极大通常是某个容器的日志失控了(未限制日志大小)。

3. 实时监控容器资源占用 (CPU/内存)

系统卡顿、Load 飙升时,看看是谁在吃资源。

bash
docker stats

三、 Docker 终极清理:大扫除与空间释放

确认空间被无用数据占用后,安全进行大面积清理,瞬间释放十几 G 甚至几十 G 的空间。

1. 官方一键安全清理

清理所有已停止的容器、未使用的网络以及“悬空”的无用镜像。

bash
docker system prune

2. 强力深度清理 (极其有效)

⚠️ 注意: 确保重要数据已挂载到宿主机。此命令会干掉所有未运行的容器、所有未被使用的旧镜像和游离的无用数据卷。

bash
docker system prune -a --volumes

3. 核弹级清理 (解决磁盘 100% 导致 Docker 死锁)

如果系统磁盘已经爆满,Docker 守护进程卡死连 prune 命令都无法执行时,直接物理清空底层数据(所有容器和镜像都会消失,需重新拉取部署)。

bash
sudo rm -rf /var/lib/docker sudo rm -rf /etc/docker

四、 Docker 服务故障排查与底层修复

遇到 Job for docker.service failed 或无法拉取镜像时的救命命令。

1. 查看 Docker 守护进程报错日志

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/* 检查并重启系统即可)。

2. 修复镜像拉取失败 (配置国内加速器)

遇到 no such hosttimeout 时,修改或添加镜像加速源。

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:

bash
sudo systemctl daemon-reload sudo systemctl restart docker

五、 Docker Compose 常用命令

多容器编排(如一键部署 Web 后端、MySQL、Redis 全家桶)时必备。

bash
# 在含有 docker-compose.yml 的目录下执行: # 后台启动并自动构建镜像 (首次部署或修改 Dockerfile 后常用) docker compose up -d --build # 停止并移除容器、网络 (保留数据卷) docker compose down # 仅重启 Compose 管理的所有服务 docker compose restart

六、 Linux 宿主机生存指南:防坑与自救

脱离了 Docker,宿主机的健康才是底线。这里整理了平时排查网络、揪出性能“内鬼”以及管理大文件的必备神技。

1. 防止 OOM 崩溃的 Swap 护航

如果容器较多且限制了内存,总和接近服务器物理内存上限时系统极易崩溃。强烈建议配置 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

2. 磁盘与大文件杀手 (告别空间焦虑)

系统毫无征兆地报错时,第一件事就是查磁盘。找出隐藏的日志或废弃的 AI 模型文件。

bash
# 查看系统整体磁盘使用情况 (第一眼先看这个) df -h # 揪出当前目录下各个文件夹的大小 (非常适合在根目录 / 下执行排查) du -sh * | sort -rh # 全盘地毯式搜索:找出大于 500MB 的所有文件 find / -type f -size +500M -exec ls -lh {} \;

3. 系统性能监控 (抓出吃 CPU 和内存的内鬼)

面板显示“运行堵塞”时,用这些命令看穿一切。

bash
# 查看内存和 Swap 虚拟内存的使用情况 free -m # 终端里的任务管理器 (按 P 按 CPU 排序,按 M 按内存排序) # 推荐使用 htop,如果没有可以通过 apt install htop 安装 top htop

4. 网络与端口侦查 (排查代理与访问故障)

配置反向代理或内网穿透时,端口冲突或网络不通是最常见的坑。

bash
# 查看本机所有正在监听的端口及对应的程序 (查端口占用神器) sudo ss -tulnp # 或者使用老牌命令 sudo netstat -tulnp # 测试本机是否能连通外部网络 (排查代理配置或防火墙) curl -I [https://www.google.com](https://www.google.com) # 检查某个域名目前的 DNS 解析 IP ping blog.zym588.space

5. 进程管理与后台挂机 (折腾必备)

在服务器上编译源码或下载巨大权重文件时,最怕 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 许可协议。转载请注明出处!