Docker存储空间清理方法

Docker清理指南

一、             /var/lib/docker/volumes清理

一般我们直接执行docker rm container_id的时候不会删除容器下挂载的数据卷,久而久之,/var/lib/docker/volumes目录越来越大,所以我们要定期清理不需要数据卷。执行docker rm container_id -v可以在删除容器的同时删除卷。

1.         查看volumes目录大小

# du -sh /var/lib/docker/volumes/

Docker存储空间清理方法 - wangyj8807 - wangyj的博客

 

 

2.         清理volumes目录下不同的volume

# docker volume ls -f dangling=true | awk '{ print $2 }' | xargs docker volume rm

Docker存储空间清理方法 - wangyj8807 - wangyj的博客

 

 

3.         查看清理后的volumes目录大小

 

 Docker存储空间清理方法 - wangyj8807 - wangyj的博客

 

二、             /var/lib/docker/devicemapper清理

devicemapper是存镜像的目录,想要清理此目录,我们只能删除镜像来减小这个目录大小。

 

三、             /var/lib/docker/tmp清理

有一次制作镜像,一口气后台制作8个镜像,结果,tmp目录瞬间涨到12G。虚机硬盘分配的空间不大,导致了磁盘爆满,还好能直接删除tmp目录下所有的文件目录。

 

四、             容器清理

# docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v

 

五、             镜像清理

# docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | xargs -r docker rmi

<think> 我们参考了多个关于清理Docker磁盘空间的引用,综合给出以下方法。用户的主要需求是清理Docker占用的磁盘空间,我们将提供多种清理方式,并说明注意事项。 根据引用[1][2][3][4][5],清理方法主要包括: 1. 使用docker system prune命令清理 2. 清理未使用的镜像、容器、卷和网络 3. 清理日志文件 4. 其他辅助方法(如迁移存储位置、限制日志大小等) 我们将逐步说明清理步骤: </think> ### 清理Docker磁盘空间的完整指南 以下是基于站内引用整理的Docker磁盘空间清理方法,按操作风险从低到高排序:[^1][^2][^3][^4][^5] --- #### **1. 查看磁盘占用情况(首选)** ```bash # 查看Docker整体磁盘使用 docker system df # 查看详细占用(镜像/容器/卷) docker system df -v # 检查Docker存储目录大小 du -hs /var/lib/docker/ ``` --- #### **2. 安全清理(推荐)** ```bash # 删除所有悬空资源(无tag镜像、停止的容器、无用网络) docker system prune ``` ▸ 可释放空间:悬空镜像($IMAGE$)、停止的容器($CONTAINER$)、孤立网络 ▸ **注意**:不会删除正在运行的容器和有容器引用的镜像[^2][^4] --- #### **3. 深度清理(谨慎使用)** ```bash # 删除所有未使用的资源(包含未被任何容器引用的镜像) docker system prune -a ``` ▸ 效果:释放空间 $\propto$ (未使用镜像数 $\times$ 平均镜像大小) ▸ **风险**:会删除所有未被容器使用的镜像[^4][^5] --- #### **4. 专项清理** **► 清理悬空卷** ```bash docker volume rm $(docker volume ls -qf dangling=true) ``` ▸ 适用场景:当`docker system df`显示$VOLUME$占用过高时[^5] **► 清理日志文件** ```bash # 查找大日志文件(示例查找>1G文件) find /var/lib/docker -size +1G -name "*.log" # 清空日志文件(需确认文件名) truncate -s 0 /path/to/large.log ``` ▸ **预防措施**:在docker-compose.yml限制日志大小[^5]: ```yaml logging: driver: "json-file" options: max-size: "500m" ``` --- #### **5. 终极解决方案** ```bash # 停止Docker服务 sudo systemctl stop docker # 迁移数据目录(需大容量磁盘) rsync -av /var/lib/docker /new/storage/ # 修改启动配置(/etc/docker/daemon.json) { "data-root": "/new/storage/docker" } ``` --- ### 最佳实践建议 1. **定期维护**:每月执行 `docker system prune`[^1] 2. **镜像管理**:及时删除无用镜像 ($\sum_{i=1}^{n} \text{镜像大小}_i$) 3. **监控预警**:设置磁盘使用阈值(如 $\geqslant 85\%$ 时告警) 4. **规范部署**:使用.dockerignore避免构建冗余文件[^1] > 📌 **关键注意**:执行 `prune -a` 前需确保无重要镜像被误删,建议先备份关键镜像[^2][^4]。对于生产环境,推荐使用容器编排工具(如K8s)自动回收资源[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值