如何在Elastic Beanstalk中增加Docker中的ulimit?

我想增加Elastic Beanstalk中Docker的ulimit来运行一些应用程序。 我知道我需要增加Docker主机的ulimit并重新启动docker服务,但是找不到一个办法。

我写了以下.ebextensions/01limits.config但仍然不能增加ulimit。

 commands: 01limits: command: echo -e "#commands\nroot soft nofile 65536\nroot hard nofile 65536\n* soft nofile 65536\n* hard nofile 65536" >> /etc/security/limits.conf 02restartdocker: command: service docker restart 

join2014-11-20 09:37 GMT

还试着用下面的configuration文件。

 commands: 01limits: command: echo -e "#commands\nroot soft nofile 65536\nroot hard nofile 65536\n* soft nofile 65536\n* hard nofile 65536" >> /etc/security/limits.conf 02restartdocker: command: service docker stop && ulimit -a 65536 && service docker start 

它成功增加了ulimit,但在pipe理控制台中显示以下错误:

[实例:i-xxxxxxxx模块:AWSEBAutoScalingGroup ConfigSet:null]实例上的命令失败。 返回码:1输出:[CMD-AppDeploy / AppDeployStage1 / AppDeployEnactHook / 00flip.sh]命令失败,错误代码为1:/opt/elasticbeanstalk/hooks/appdeploy/enact/00flip.sh停止nginx:[OK]启动nginx:[ OK]正在停止当前应用程序容器:1c ********** …来自守护程序的错误响应:无法销毁容器1c **********:驱动程序devicemapper无法删除根文件系统1c * ************************************************** ***********:设备忙2014/11/20 09:06:36错误:无法删除一个或多个容器。

我不确定这个configuration是否合适。

这是很晚,但这是一个(希望)你的问题的工作解决scheme

 initctl stop eb-docker && /sbin/service docker stop && ulimit -n 65536 && ulimit -c unlimited && export DMAP=$(df | grep /var/lib | awk '{print $1}') && if [[ $DMAP ]]; then umount $DMAP; fi && /sbin/service docker start && initctl start eb-docker 

说明如下:

  • 停止docker集装箱服务
  • 停止docker服务
  • 应用你的ulimit设置(我的不同于你的)
  • find有问题的devicemapper挂载和卸载它(处理,如果没有被安装)
  • 开始docker工人
  • 开始docker集装箱服务

这不是一个优雅的解决scheme,但这是围绕EB的生活。

你可能想把它分解成更小的组件,但总的想法就在那里。

我正在运行试图更改文件限制的apachectl版本。 这是失败的,并导致容器的错误。

但是,最终,我从容器中运行了ulimit命令:

 root@22806b77a474:/home# ulimit unlimited 

似乎apachectl试图提高docker容器中实际不存在的限制。 我ULIMIT_MAX_FILES的东西,没有造成问题。

 RUN sed -i 's/ULIMIT_MAX_FILES="${APACHE_ULIMIT_MAX_FILES:-ulimit -n 8192}"/ULIMIT_MAX_FILES="ulimit -H -n"/' /usr/sbin/apachectl