You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Ubuntu14.04的Docker容器设置Redis vm.overcommit_memory报错求助

解决Docker容器中sysctl vm.overcommit_memory设置失败的问题

这个问题我碰到过好多次啦,Docker容器里直接用sysctl修改内核参数失败,核心原因是容器的/proc/sys目录默认是只读挂载的,没办法直接通过sysctl命令修改。给你几个实用的解决办法:

方法一:启动容器时指定sysctl参数(推荐,永久生效)

如果你的容器还没启动,或者可以重启容器,这是最稳妥的方式。直接在docker run命令里加上--sysctl参数来设置:

docker run --sysctl vm.overcommit_memory=1 [你的容器其他启动参数] ubuntu:14.04

要是你用Docker Compose管理容器,就在docker-compose.yml的服务配置里添加sysctls字段:

services:
  redis-service:
    image: ubuntu:14.04
    sysctls:
      - vm.overcommit_memory=1
    # 这里可以加上你的其他配置,比如端口映射、挂载目录等

这样启动的容器会直接生效这个内存参数,哪怕容器重启也不会丢失设置。

方法二:临时修改运行中的容器(重启后失效)

如果容器已经在运行,不想重启的话,可以直接操作/proc/sys下的对应文件,绕开sysctl命令:

# 先进入容器内部(用容器ID或者名称都行)
docker exec -it [容器ID/名称] bash
# 直接写入参数,root权限下不需要sudo
echo 1 > /proc/sys/vm/overcommit_memory

修改完可以验证一下是否生效:

cat /proc/sys/vm/overcommit_memory

这个方法适合临时测试,不过容器重启后设置就会消失,需要重新配置。

小提醒

不是所有sysctl参数都能在容器里修改,Docker只开放了部分和内存、网络相关的参数,vm.overcommit_memory刚好是允许修改的。如果遇到其他参数无法修改,别随便用特权容器(--privileged),会带来安全风险,优先考虑Docker官方支持的配置方式。

内容的提问来源于stack exchange,提问作者GabrieleMartini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:47:20