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

如何在Docker容器中配置/etc/security/limits.conf限制

在Docker容器中生效limits.conf配置的解决方法

直接将宿主机的/etc/security/limits.conf复制到容器中不生效,核心原因是Docker默认启动容器时不会加载PAM(Pluggable Authentication Modules)的限制模块,这类基于PAM的配置无法被自动应用。以下是几种可行的解决方式:

方法一:启动容器时直接指定--ulimit参数

这是最直接且可靠的方式,Docker支持通过--ulimit参数直接设置资源限制,对应你需要的配置:

  • nofile限制:--ulimit nofile=1000000:1000000(冒号前是soft值,后是hard值)
  • core限制:--ulimit core=0:unlimited
  • memlock限制:--ulimit memlock=-1:-1(Docker中用-1表示unlimited)

完整启动命令示例:

docker run --ulimit nofile=1000000:1000000 --ulimit core=0:unlimited --ulimit memlock=-1:-1 [你的镜像名称]

方法二:结合容器内配置与启动参数(针对特定用户)

如果需要针对容器内的dfyz用户单独设置nofile限制,可按以下步骤操作:

  1. 在容器内(或通过Dockerfile)添加limits.conf配置:
    echo "dfyz          soft    nofile            1000000" >> /etc/security/limits.conf
    echo "dfyz          hard    nofile            1000000" >> /etc/security/limits.conf
    echo "* soft core 0" >> /etc/security/limits.conf
    echo "* hard core unlimited" >> /etc/security/limits.conf
    echo "* soft memlock unlimited" >> /etc/security/limits.conf
    echo "* hard memlock unlimited" >> /etc/security/limits.conf
    
  2. 启动容器时需开启PAM支持,添加--privileged参数(注意:该参数会赋予容器极高权限,谨慎使用),或者确保容器内的服务通过PAM会话启动。
  3. 额外可在dfyz用户的~/.bashrc或/etc/profile中添加ulimit命令,确保用户登录时生效:
    echo "ulimit -Sn 1000000" >> /home/dfyz/.bashrc
    echo "ulimit -Hn 1000000" >> /home/dfyz/.bashrc
    

验证配置是否生效

进入容器后,执行以下命令查看当前限制:

# 查看nofile限制
ulimit -Sn  # soft值
ulimit -Hn  # hard值

# 查看core限制
ulimit -Sc  # soft值
ulimit -Hc  # hard值

# 查看memlock限制
ulimit -Sl  # soft值
ulimit -Hl  # hard值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:01:14