Windows本地Docker部署Redis无法存储,如何开启Memory overcommit?
解决Windows Docker中Redis的内存超配警告问题
你遇到的Redis警告是因为未开启内存超配(vm.overcommit_memory=1),这可能导致后台存盘、数据复制在低内存甚至正常内存场景下失败,以下是几种可行的解决方法:
方法一:修改docker-compose配置,启动时自动设置参数
直接在docker-compose.yml中给Redis容器添加特权模式,并在启动前执行内核参数配置命令:
version: '3' services: redis: image: "redis" ports: - "6379:6379" networks: - my-service privileged: true command: sh -c "sysctl vm.overcommit_memory=1 && redis-server" networks: my-service: external: true
privileged: true会赋予容器修改内核参数的权限,启动脚本先完成参数配置再启动Redis服务。
方法二:修改WSL2系统配置(Docker Desktop默认用WSL2后端)
如果你的Docker使用WSL2作为后端,直接修改WSL2子系统的内核参数即可:
- 打开WSL2终端(比如Ubuntu子系统)
- 编辑
/etc/sysctl.conf文件,添加一行:vm.overcommit_memory = 1 - 执行命令
sysctl -p让配置立即生效 - 重启Redis容器,警告即可消失
方法三:临时忽略警告(不推荐生产环境使用)
如果只是测试环境不想调整系统参数,可以在Redis启动时添加忽略警告的参数:
修改docker-compose中的command为:
command: redis-server --ignore-warnings "OOM"
该方法只是屏蔽警告,并未解决根本问题,生产环境不建议使用。
内容的提问来源于stack exchange,提问作者watch dog
相关产品推荐
相关产品推荐

