Docker(五)_数据根目录空间不足的原因与解决方法

在使用 Docker 部署服务的过程中,最常见的问题之一就是 数据根目录空间不足 。当宿主机的 /var/lib/docker 目录占用过多空间时,不仅会导致镜像无法拉取、容器无法启动,还可能造成服务异常。下面我们从成因、排查到解决一步一步说明。

一、Docker 数据根目录是什么

Docker 默认将所有运行所需的数据存放在 /var/lib/docker 目录,包括:

  • 镜像(images)

  • 容器文件系统(containers)

  • 本地卷数据(volumes)

  • 网络、日志、metadata 等

因此,随着镜像增多、容器频繁运行、日志不断积累,这个目录可能会迅速膨胀。

二、为什么会空间不足

2.1 镜像过多、未清理

很多测试镜像、旧版本镜像长期堆积,占用大量空间。

2.2 已退出的容器仍占空间

即使容器不在运行,它的文件系统仍然存在。

2.3 Volume 持久化数据不断增大

特别是数据库、日志持久盘,不清理会迅速爆满。

2.4 Docker 日志过大

容器内程序不断输出日志,Docker 会将其记录到:
/var/lib/docker/containers/<id>/<id>-json.log

日志文件几十 GB 也很常见。

2.5 构建镜像造成大量临时层

频繁执行 docker build 会产生 build cache,占用大量空间。

这里我遇到的问题是:所提供的服务器/home目录空间过小,无法拉起镜像。

三、如何排查 Docker 占用空间

3.1 查看 Docker 磁盘用量

复制代码
docker system df

3.2 查看容器日志大小

复制代码
du -sh /var/lib/docker/containers/*/*-json.log

3.3 查看各类型数据占用比例

复制代码
sudo du -h --max-depth=1 /var/lib/docker

四、解决方案:释放Docker空间

4.1 清理无用镜像

复制代码
docker image prune -a

4.2 清理已停止容器

复制代码
docker container prune

4.3 清理无主 volume

复制代码
docker volume prune

4.4 清理容器日志

手动清理

复制代码
truncate -s 0 /var/lib/docker/containers/*/*-json.log

设置日志大小限制(推荐)

编辑 /etc/docker/daemon.json

复制代码
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

重启 Docker:

复制代码
systemctl restart docker

我说实话没啥用啊。我这里是因为条件不行,所以我选择以下解决方案。

五、从根本解决:迁移 Docker 数据目录

5.1 在要转移的目录/home下新建目录

复制代码
cd /home
mkdir data_catalog

5.2 停止docker服务

复制代码
sudo systemctl stop docker

5.3 移动 Docker 数据目录

复制代码
sudo mv /var/lib/docker /home/data_catalog

5.4 创建符号链接

复制代码
sudo ln -s /home/data_catalog/docker /var/lib

5.5 重启docker服务

复制代码
sudo systemctl start docker
相关推荐
qq_366086225 分钟前
sql server 整数转百分比
运维·服务器·数据库
喂自己代言9 分钟前
Linux基础命令速查指南
linux·运维·服务器
bkspiderx10 分钟前
详解Linux下xrandr工具:从基础配置到三显示器扩展桌面
linux·运维·计算机外设·显示器·分屏·xrandr·显示器扩展桌面
航Hang*11 分钟前
第六章:网络系统建设与运维(中级)——链路聚合
运维·服务器·网络·笔记·华为·ensp
翼龙云_cloud14 分钟前
阿里云云渠道商:GPU 服务器安全组配置指南 3 步解决端口开放问题
运维·服务器·安全·阿里云·云计算
会飞的土拨鼠呀15 分钟前
array 这个是服务器的什么信息
运维·服务器
阿干tkl17 分钟前
Linux Web终端连接
linux·运维·前端
_OP_CHEN18 分钟前
【测试理论与实践】(四)测试用例篇(上):从概念到万能思路,解锁测试设计核心密码
运维·测试开发·测试用例·bug·压力测试·测试·网络测试
胡萝卜3.024 分钟前
程序构建核心解析:从预处理到链接的完整指南
运维·服务器·c++·人工智能·操作系统·编译原理·系统编成
GAOJ_K30 分钟前
滚珠花键的安装条件与适应性
运维·人工智能·科技·机器人·自动化·制造