首页 > Docker容器技术 > docker无法用exec进入容器的问题[cannot allocate memory]

docker无法用exec进入容器的问题[cannot allocate memory]

2016年12月4日

docker无法用exec进入容器的问题[cannot allocate memory]
http://xiaorui.cc/2015/06/11/docker无法用exec进入容器的问题cannot-allocate-memory/
今同事小飞飞遇到一个坑爹的问题,可乐死我了…. 我发现他们组docker用的量也不少,但是经常出问题…. 这次是无法使用docker -it exec 进入容器。奇怪的是docker的提示是 内存无法分配,我们ps aux看了下docker的后端进程,内存已经用到40G了… … 

[[email protected] socialx]$ docker exec -it wh-online-deploy bash
Cannot run exec command 7559431b2205817b2405d33cc22339dcf90f9e3a9f8c01b2f93e7562bcf1f279 in container c326f588d91bf77a3234ac0a063543e8b27d69f43934b486593f2a1c2dd33f61: fork/exec /usr/bin/docker: cannot allocate memory Error starting exec command in container

docker的版本是1.5

[[email protected] socialx]$ docker -v
Docker version 1.5.0, build a8a31ef/1.5.0

[[email protected] socialx]$ free -m

total used free shared buffers cached
Mem: 64375 48876 15499 0 505 9739
-/+ buffers/cache: 38631 25744
Swap: 0 0 0

看了下docker的github里的issue,大多数人把overcommit_memory配置成1或者2 .

[[email protected] socialx]$ cat /proc/sys/vm/overcommit_memory
0
[[email protected] socialx]$ cat /proc/sys/vm/overcommit_ratio
50

您还可以配置交换空间;在这种情况下,进程不会被杀死,但如果内存使用量增长太多,系统可能会变得反应迟钝。
这虽然在一定程度上保证不死,但是问题是docker为毛占用了40G的内存… 最后的解决方法是,万能重启….

关于 docker cannot allocate memory Error starting exec command in container 的继续探讨…..

7-13,有遇到这jb问题了….. 已经确定其中一个容器里面的应用有个模块有内存泄漏的问题,fix解决….

但是让人奇怪的是,从docker主机外面查看内存占用,不会看到具体的进程,只会看到docker进程占用了50g的内存….

分类: Docker容器技术 标签:
本文的评论功能被关闭了.