docker compose启动失败报bufio.scanner token too long错误如何解决
问题原因
bufio.Scanner: token too long 报错是docker-compose读取容器日志时遇到了超出默认缓冲区上限的超长单行内容导致的,你之前在容器编辑器内粘贴的大量文本被写入了容器标准输出/错误日志,生成了异常长的单行记录,卸载重装docker/docker-compose不会自动清理旧容器的日志文件,所以问题会持续存在。
解决方案
步骤1:定位关联的容器ID
首先找到你之前用docker-compose启动的所有容器:
docker ps -a | grep <你的docker-compose服务名关键词>
如果记不住服务名,直接列出所有停止状态的容器也可以:
docker ps -a --filter "status=exited"
步骤2:删除异常容器及关联日志
执行以下命令删除有问题的容器,会同步清理对应的日志文件:
docker rm -f <上一步查到的异常容器ID>
如果所有容器都是docker-compose管理的,可以直接批量删除所有已停止的容器:
docker container prune -f
步骤3:清理docker-compose项目残留状态
进入你的docker-compose.yml所在目录,删除docker-compose生成的隐藏状态目录:
rm -rf ./.docker-compose/
部分旧版本docker-compose状态文件存放在~/.docker/compose/目录下,也可以同步清理:
rm -rf ~/.docker/compose/*<你的项目名关键词>*
步骤4:验证修复
回到docker-compose.yml目录执行命令验证是否恢复正常:
docker-compose ps
如果没有报错就可以正常执行up/down等命令了。
后续预防措施
- 容器内操作不要一次性粘贴超过1M的单行文本
- 可以在docker-compose.yml里配置日志大小限制,避免生成超大日志:
services: your-service: logging: options: max-size: "10m" max-file: "3"
内容的提问来源于stack exchange,提问作者weiklr
相关产品推荐
相关产品推荐

