怎么解决 Docker 容器在存储挂载期间因磁盘空间不足导致异常教程

落磊吖_8954

落磊吖_8954

2026-06-22

757人浏览

原创

docker挂载失败报“no space left on device”时,根本原因在于宿主机挂载点或docker根目录(如/var/lib/docker)空间或inode耗尽,需用df -h和df -i精准定位,再针对性清理日志、执行docker system prune或迁移data-root路径。

怎么解决 docker 容器在存储挂载期间因磁盘空间不足导致异常教程

遇到 Docker 容器在挂载存储时因磁盘空间不足报错(如 No space left on device 或 failed to mount volume),问题通常不在容器内部,而是宿主机的存储路径或 Docker 自身数据目录已满。关键要分清“挂载点空间”和“Docker 根目录空间”两层,再针对性清理或迁移。

确认到底是哪块空间满了

挂载失败不等于系统盘满,需快速定位瓶颈:

  • 运行 df -h 查看所有挂载点,重点关注容器 volume 所映射的宿主机路径(比如 /data、/mnt/vol1)是否已 ≥90%
  • 同时检查 docker info | grep "Docker Root Dir" 对应路径(通常是 /var/lib/docker)是否也快满——它影响镜像拉取、容器启动、卷元数据写入等底层操作
  • 若挂载的是 emptyDir 或未指定 hostPath 的临时卷,实际占用的是 Docker overlay2 可写层,此时要查 du -sh /var/lib/docker/overlay2/* | sort -hr | head -5

快速释放挂载点或 Docker 根目录空间

先让挂载流程恢复,再深入清理:

Learn Docker
Learn Docker

通过 LabEx 容器基础课程和镜像/编排实验学习 Docker。Docker 课程和实验通过 LabEx MCP 获取,返回 labex.io 链接以继续。

下载
  • 对挂载目标目录(如 /data):用 find /data -type f -name "*.log" -size +50M -exec truncate -s 0 {} \; 清空大日志,避免删除导致应用丢失句柄
  • 对 /var/lib/docker:执行 docker system prune -af(慎用 --volumes,除非确认无业务数据卷);再配合 journalctl --vacuum-size=100M 压缩系统日志
  • 若发现某容器日志异常膨胀,用 docker inspect <container> | jq '.HostConfig.LogConfig'</container> 查日志配置,并手动清空其 LogPath 文件(truncate -s 0 /var/lib/docker/containers/xxx/xxx-json.log)

从配置上堵住源头

单次清理治标,固定策略才能防复发:

  • 为所有新容器强制限制日志大小:在 /etc/docker/daemon.json 中添加 {"log-driver":"json-file","log-opts":{"max-size":"50m","max-file":"3"}},然后 systemctl reload docker
  • 挂载 volume 时显式指定宿主机路径,并确保该路径所在分区有足够余量(建议预留 ≥20%);避免直接挂载根分区或 /var 下子目录
  • 对长期运行服务,改用 hostPath 挂载到独立大分区(如 /mnt/data),并在 Pod 中通过 resources.ephemeral-storage 声明临时存储需求,让 K8s 调度器提前规避空间紧张节点

必要时迁移 Docker 数据目录

如果 /var/lib/docker 所在分区持续告急,且无法扩容,就迁移到大磁盘:

  • 停掉 Docker:systemctl stop docker
  • 用 rsync -avz /var/lib/docker/ /mnt/bigdisk/docker/ 同步(保留权限和硬链接)
  • 修改 /etc/docker/daemon.json,加入 "data-root": "/mnt/bigdisk/docker"
  • 重启 Docker:systemctl daemon-reload && systemctl start docker,再用 docker info 确认路径已生效

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

745

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5699

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6717

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2593

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

279

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

451

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

420

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

305

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

465

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习