docker在centos由于空间满如何解决
一、问题显示:

第四行的:Result: start-limit) since
现在的报错 start request repeated too quickly 是因为 Docker 之前启动失败太频繁,systemd 触发了 “熔断保护”,暂时禁止重启。真正的根因是 dockerd 启动时直接报错(status=1/FAILURE),必须先把 “根本错误” 找出来。
二、问题排查:
1.检查 containerd 状态
Docker 依赖 containerd,先确认它是否正常:
bash
运行
systemctl status containerd
如果异常,重启 containerd 再试:
bash
运行
systemctl restart containerd
systemctl start docker
我的是正常的:
2.我停掉其中的docker

这个警告是什么意思?
Warning: Stopping docker.service, but it can still be activated by: docker.socket
- 这是 systemd 的标准提示:你停止了
docker.service,但docker.socket这个套接字还在运行。 - 当有客户端(比如
docker ps命令)尝试连接 Docker 时,systemd 会自动唤醒docker.service来处理请求。 - 这是 Linux 系统的 ** 套接字激活(socket activation)** 机制,目的是让服务按需启动,节省资源。

3.运行systemctl status docker.service

第四行的:Result: start-limit) since
现在的报错 start request repeated too quickly 是因为 Docker 之前启动失败太频繁,systemd 触发了 “熔断保护”,暂时禁止重启。真正的根因是 dockerd 启动时直接报错(status=1/FAILURE),必须先把 “根本错误” 找出来。
4.重置失败状态,解除熔断
先把 systemd 的失败计数清掉,才能重新测试启动:
bash
运行
# 重置失败状态
systemctl reset-failed docker.service
# 彻底停止所有相关组件,防止自动唤醒
systemctl stop docker docker.socket containerd
5.查看真实报错(最关键)
执行以下命令,找出 Docker 启动失败的第一原因(日志里最前面的红色错误):
bash
运行
# 查看最近50条详细日志
journalctl -u docker.service -n 50 --no-pager

找到重要的信息mkdir /mnt/sdb/dockerdata/tmp: no space left on device
这说明 Docker 数据目录所在的磁盘分区已满,导致无法创建临时目录,所以 dockerd 启动失败。
三、找到问题关键,解决问题

1. 确认磁盘空间占用
先查看 /mnt/sdb 分区的使用情况:
bash
运行
df -h /mnt/sdb
如果结果里 Use% 接近 100%,就确认是磁盘满了。
2.快速清理根分区空间
先释放紧急空间,让系统恢复基本功能:
bash
运行
# 清理 yum 缓存
yum clean all
# 清理系统临时文件
rm -rf /tmp/*
rm -rf /var/tmp/*
# 清理旧内核(谨慎操作,保留至少1个可用内核)
package-cleanup --oldkernels --count=1
# 清理 Docker 无用资源(如果 Docker 已安装)
docker system prune -a -f
警告⚠️:docker system prune -a -f 谨慎敲,因为这个会把你的容器经常不用的全部删掉,我的容器就几乎都删除了
3.. 定位占用空间最大的目录
找出根分区下的空间大户,针对性删除:
bash
运行
# 查看根目录下各文件夹大小
du -sh /* | sort -rh
# 进一步定位大目录(比如 /var 或 /home)
du -sh /var/* | sort -rh

扩展:盘符的知识点
1. 查看所有磁盘 / 分区(最直观)
bash
运行
lsblk
输出示例:
plaintext
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 49.5G 0 part /
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 200G 0 part /mnt/sdb
sda、sdb:物理磁盘(类似 Windows 的 C 盘、D 盘)sda1、sda2:磁盘上的分区MOUNTPOINT:分区挂载到的目录(访问这个目录就是访问这块分区)
2. 查看挂载情况和使用空间
bash
运行
df -h
输出示例:
plaintext
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 30G 18G 63% /
/dev/sda1 495M 120M 350M 26% /boot
/dev/sdb1 200G 200G 0 100% /mnt/sdb
tmpfs 7.8G 0 7.8G 0% /dev/shm
Filesystem:设备名(如/dev/sda2)Size/Used/Avail:总大小、已用、可用空间Mounted on:挂载目录(你访问这个目录就是在操作这块盘)
3. 查看磁盘详细信息(包括型号、大小)
bash
运行
fdisk -l
或
bash
运行
lsblk -f
lsblk -f 还会显示文件系统类型(ext4、xfs 等)和 UUID。
4. 只看物理磁盘(排除分区)
bash
运行
ls /dev/sd* | grep -E '[a-z]$'
输出类似:
plaintext
/dev/sda
/dev/sdb
这些就是系统里的物理磁盘,后面加数字就是分区(如 sda1)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)