当前位置:首页 > 技术 > 正文内容

清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录

访客 技术 2026年7月7日 1

一、分析并清理Docker磁盘占用

当Docker服务运行一段时间后,可能会占用大量磁盘空间。我们可以通过以下命令来分析和清理。

1. 检查Docker目录的总大小

使用 du 命令可以快速查看 /var/lib/docker 目录的磁盘占用情况。

sudo du -hs /var/lib/docker/

示例输出可能显示一个较大的数值,例如 237G,表明Docker数据占用了237GB空间。

2. 查看Docker各组件的磁盘使用详情

Docker提供了一个专门的命令 docker system df,类似于Linux的 df,可以详细列出镜像、容器、数据卷和构建缓存占用的空间。

docker system df

输出会清晰地展示不同类型资源的总大小、活跃大小以及可回收空间。例如,镜像可能占用了122.2GB,其中79.07GB可以被回收。

3. 执行基础清理

要清理停止的容器、未使用的网络、悬空镜像(无标签的镜像)以及构建缓存,可以使用 docker system prune 命令。

docker system prune

执行前会提示将删除的内容,确认后即可释放空间。

4. 执行彻底清理

如果需要更彻底的清理,删除所有未被任何容器使用的镜像,可以使用 docker system prune -a。此操作不可逆,请谨慎使用,因为它会删除所有未关联到容器的镜像。

二、迁移Docker数据目录

如果根分区空间不足,可以将Docker的数据目录迁移到其他有足够空间的磁盘分区,例如 /data

1. 停止Docker服务

在迁移数据前,必须先停止Docker守护进程。

sudo systemctl stop docker

2. 创建新的数据目录

在目标磁盘(如 /data)下创建新的Docker数据目录。

sudo mkdir -p /data/docker

3. 迁移现有数据

使用 rsync 命令将原有数据安全地迁移到新目录。该命令会保留所有文件权限和属性。

sudo rsync -avz /var/lib/docker/ /data/docker/

4. 配置Docker使用新目录

最简单的方法是修改Docker的配置文件 daemon.json。如果该文件不存在,可以创建它。

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

在文件中添加或修改以下内容,指定新的数据根目录:

{
  "data-root": "/data/docker"
}

5. 重新加载并启动Docker

保存配置文件后,重新加载systemd配置并重启Docker服务。

sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker

6. 验证迁移结果

启动Docker后,使用 docker info 命令检查Docker的根目录是否已更新。

docker info | grep "Docker Root Dir"

输出应显示新的路径,例如 Docker Root Dir: /data/docker

7. 确认数据完整性

运行 docker imagesdocker ps -a 等命令,确认所有镜像和容器数据都已正确迁移。

8. 清理旧目录

在确认一切正常后,可以安全地删除原有的 /var/lib/docker 目录以释放空间。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。