如何定位服务器磁盘被docker容器打满

文章介绍了如何查看服务器的磁盘挂载情况,使用`df-h`命令。接着,通过`du-h-x--max-depth=1/var/lib/docker`来检查指定目录`/var/lib/docker`的占用情况,发现Docker占据了较大空间。然后,利用`dockersystemdf-v`来进一步分析哪个Docker容器是导致空间紧张的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 查看目前磁盘占用情况

#查看目前服务器磁盘挂载情况
df -Th 

2.查看指定目录占用情况

#查看指定目录占用情况
du -h -x --max-depth=1   /var/lib/docker

3.查看到是docker占用空间比较大,查看具体是哪个容器

docker system df -v
<think>我们正在解决Docker磁盘空间不足的问题。根据引用内容,主要方法是将Docker的默认存储位置迁移到空间更大的磁盘分区。以下是具体步骤: 1. **停止Docker服务**:确保在迁移过程中Docker处于停止状态,避免数据不一致。 ```bash systemctl stop docker ``` 2. **查看磁盘空间**:使用`df -h`命令查看磁盘使用情况,选择一个有足够空间的分区(例如`/home`)来存放新的Docker数据。 3. **创建新的Docker目录**:在选定的分区上创建新的Docker存储目录。 ```bash mkdir -p /home/docker/lib ``` 4. **迁移数据**:使用`rsync`命令将原Docker数据(默认在`/var/lib/docker`)迁移到新位置。 ```bash rsync -avz /var/lib/docker /home/docker/lib/ ``` 注意:这里的目标目录是`/home/docker/lib/`,所以原`/var/lib/docker`目录下的所有内容会被同步到`/home/docker/lib/docker`中。 5. **修改Docker配置文件**:编辑`/etc/docker/daemon.json`文件(如果不存在则创建),指定新的存储路径。 ```json { "graph": "/home/docker/lib/docker" } ``` 注意:在较新的Docker版本中,也可以使用`"data-root"`代替`"graph"`。但根据引用[3]中的示例,使用`"graph"`是可行的。 6. **重新加载并重启Docker**: ```bash systemctl daemon-reload systemctl restart docker ``` 7. **验证迁移**:检查Docker的信息,确认存储路径是否已更改。 ```bash docker info | grep "Docker Root Dir" ``` 应该显示为`/home/docker/lib/docker`。 8. **删除旧数据**(可选):确认迁移成功后,可以删除原目录以释放空间。 ```bash rm -rf /var/lib/docker ``` **注意事项**: - 如果迁移后启动容器时遇到问题,请检查`daemon.json`的格式是否正确(例如逗号使用)。 - 确保新目录的权限正确,以便Docker可以访问。 根据引用[4]和[5],还提到了一种情况:内存不足的警告(WARNING!!!: Not enough memory available for Docker)。这通常与Docker容器的内存限制有关,而不是磁盘空间问题。如果遇到内存不足,需要增加服务器的内存资源或调整容器的内存限制。 **相关问题**: 1. 如何检查Docker占用的磁盘空间? 2. 除了迁移存储目录,还有哪些方法可以清理Docker磁盘空间? 3. 迁移Docker存储目录后,原有的容器和镜像是否还能正常使用?</think>### Docker磁盘空间不足解决方法 当云服务器Docker磁盘空间不足时,主要原因是默认存储位置`/var/lib/docker`位于系统盘(通常空间有限)。以下是完整解决方案: #### 🔧 迁移Docker存储位置(推荐) 1. **停止Docker服务** ```bash systemctl stop docker ``` 2. **查看磁盘空间** ```bash df -h # 确定空间充足的分区(如/home) ``` 3. **创建新存储目录** ```bash mkdir -p /home/docker/lib ``` 4. **迁移数据** ```bash rsync -avz /var/lib/docker/ /home/docker/lib/ ``` 5. **修改配置文件** 编辑`/etc/docker/daemon.json`: ```json { "data-root": "/home/docker/lib" // 关键配置项 } ``` 6. **重启Docker并验证** ```bash systemctl daemon-reload && systemctl restart docker docker info | grep "Root Dir" # 确认新路径生效 ``` 7. **清理旧数据**(可选) ```bash rm -rf /var/lib/docker # 确保迁移成功后再执行 ``` #### 🧹 空间清理技巧 - **删除无用资源**: ```bash docker system prune -a --volumes # 清理镜像/容器/卷 ``` - **限制日志大小**: ```bash docker run --log-opt max-size=10m ... # 单容器日志限制 ``` - **清理`/var/lib/docker/overlay2`**: ```bash du -h /var/lib/docker | sort -h # 定位大文件 ``` #### ⚠️ 注意事项 1. 迁移前确保**磁盘空间≥原数据1.3倍** 2. 若使用`graph`参数(旧版Docker),需替换为`data-root`[^3] 3. 内存不足警告需单独处理(增加swap或物理内存)[^4] 4. 生产环境建议在**业务低峰期**操作 > **迁移原理**:Docker默认使用`/var/lib/docker`存储镜像、容器和卷数据。通过修改`data-root`将存储重定向到更大分区[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值