由docker的redis 服务up 却突然无法访问,日志清理.....

当遇到Docker Redis容器因磁盘空间不足导致服务异常时,可以通过检查日志发现该问题。通过`docker-compose logs -f xxx-redis`查看日志,发现无法写入文件。使用`df -h`确认磁盘空间已用99%,然后执行脚本清理日志,如`xxxx-clean.sh`,清除/home/docker/lib/containers/目录下的日志文件。进一步使用`du -sh *`查找并清理大文件,释放磁盘空间。当磁盘空间下降到77%后,重启Redis容器,服务恢复正常。如果日志和大文件清理无效,可能需要考虑磁盘扩容或挂载额外磁盘。

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

从起docker redis 也无用 状态正常up....
1, 通过 docker-compose logs -f xxx-redis  查看日志得到问题:无法写入文件 , 判断磁盘空间不够!

2, df -h 查看磁盘空间 显示 used 99%  那么解决空间问题:
a, 查看docker 日志存放位置: find / -name *-json.log

b,编写脚本xxxx-clean.sh 以方便清除日志

#!/bin/sh
echo "=================== start clean docker containers logs ==========================" 
# 日志位置一般在 (var/lib/docker/containers/)
# 查看日志位置 find / -name *-json.log
# 查看磁盘空间 df -hl 
logs=$(find /home/docker/lib/containers/ -name *-json.log)
 
for log in $logs; 
do
    echo "clean logs:" 
    echo $log
    cat /dev/null>$log
done
 
echo "==================== end clean docker containers logs =========================="
 
echo `date`

执行, sh  xxxx-clean.sh 即可 

c 进一步 清理大文件: 

执行命令  du -sh *

或 du -h --max-depth=1   逐个目录查找对应大文件 进行处理

找到对应大文件,进行相关清理 释放更多磁盘空间后 ,

查看占用比例: df -hl

发现占比used 从99%  下降到77% , 重启redis 容器服务 即可正常使用~~~

volumes目录占用大的话:

可通过命令删除

find /var/lib/docker/volumes -type f -name "*.log" -delete

若没有发现文件,想清空下废弃的容器

docker system prune

  1. 清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。
  2. -a :清理得更加彻底,可以将没有容器使用Docker镜像都删掉。

docker system prune -a

当然 若无多余日志 或 无法删减大文件 来释放磁盘空间 那么 需要考虑扩容 或 挂载磁盘来解决空间不足问题!!!

### 解决 `docker compose -f docker-compose.yml up -d` 执行时报错的方法 #### 错误分析 当执行 `docker compose -f docker-compose.yml up -d` 出现 Redis 错误时,通常是因为 Docker 守护程序返回了一个错误响应给客户端。这可能是由于多种原因引起的,比如网络配置不当、资源不足或是特定服务(如Redis)未能正常初始化[^1]。 #### 检查与验证现有设置 确保所有的依赖项都已经被正确安装并且可以访问。对于 Redis 特定的情况来说,确认其镜像版本兼容以及端口未被占用非常重要。另外,查看是否有足够的内存分配给了 Redis 实例也很必要。 #### 查看日志获取更多信息 利用命令 `docker logs <container_name_or_id>` 来读取具体容器日志输出可以帮助定位问题所在。如果存在拼写错误或者其他明显的配置失误,在这里应该能够发现线索。 #### 更新或重建图像和服务 有时候旧版的Docker Compose文件可能不再适用于最新的软件更新;尝试使用带有构建选项(`--build`)重新编译项目可能会解决问题: ```bash docker compose -f docker-compose.yml up --build -d ``` #### 验证 YAML 文件语法准确性 不正确的YAML格式可能导致无法预料的行为甚至完全失败。可以通过在线工具或其他方式检验 `docker-compose.yml` 及任何覆盖它的 `.override.yml` 文件是否遵循标准语法规则[^2]。 #### 清理并重试 清除所有先前创建的对象(包括网络和卷),再做一次完整的部署流程也可能有助于排除残留的数据干扰新实例的成功启动: ```bash docker system prune -af docker volume rm $(docker volume ls -q) docker network prune ``` 以上清理操作将会移除所有停止状态下的容器及其关联对象,请谨慎行事以免丢失重要资料。 #### 使用命名卷而非绑定挂载 在某些情况下,采用命名卷代替直接路径映射能更好地处理权限问题及跨主机一致性挑战。修改相应的部分以适应这种变化或许会有帮助[^3]。 ```yaml services: redis: image: "redis:alpine" volumes: - mydata:/var/lib/redis # 使用命名卷替代绝对路径 volumes: mydata: ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值