当docker容器运行多个进程时很容易出现上面的错误,一般是资源超过限制了,按照网上的方法一般都能解决了,但是有的时候你会发现并没有用。
这个就涉及到limit限制了,我们都知道在centos7中limit限制分两种,一种是通过systemctl启动的应用,限制在systemctl文件中配置,默认是不做限制的,另一种是二进制文件启动的应用,它的限制还是沿用老的限制配置的 即limit.conf文件里,在容器中用二进制启动应用很容易就出现超过限制的问题了。
另外docker容器中的用户uid和宿主机的uid是通用的,也就是说你启动多个docker容器,每个容器里有相同用户相同uid 启动的服务的时候,就会出现一个问题,在一个明明进程没超过限制的容器中切换用户或者通过ssh连接时会出现failed to execute /bin/bash: Resource temporarily unavailable。
我的解决方法是修改用户的uid和gid,问题解决了!