加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

docker build失败 – “无法分配内存”

发布时间:2020-12-16 03:40:23 所属栏目:安全 来源:网络整理
导读:我的docker构建失败,出现以下错误: Untar fork/exec /usr/bin/docker: cannot allocate memory 所以我得到它 没有RAM :)但我可以清楚地看到空闲内存作为交换: total used free shared buffers cachedMem: 7517 7334 183 0 59 515-/+ buffers/cache: 6759 7

我的docker构建失败,出现以下错误:

Untar fork/exec /usr/bin/docker: cannot allocate memory

所以我得到它 – 没有RAM :)但我可以清楚地看到空闲内存作为交换:

             total       used       free     shared    buffers     cached
Mem:          7517       7334        183          0         59        515
-/+ buffers/cache:       6759        758
Swap:         4095       2635       1460

此外,似乎docker占用了一个巨大的内存块:

$top -a
top - 03:48:07 up 18 days,17 min,2 users,load average: 1.88,0.93,0.42
Tasks: 127 total,2 running,125 sleeping,0 stopped,0 zombie
Cpu(s): 49.9%us,14.0%sy,0.0%ni,13.7%id,22.2%wa,0.0%hi,0.2%si,0.0%st
Mem:   7697592k total,6351288k used,1346304k free,138804k buffers
Swap:  4194300k total,310324k used,3883976k free,1449268k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1340 root      20   0 3994m 2.1g 7548 S  6.6 28.8  64:20.43 docker
 5318 root      20   0 1499m 724m 4368 S 65.5  9.6   0:08.80 ruby
  978 root      20   0 1010m 616m   32 S  0.0  8.2   0:27.24 ruby

所以问题是:
为什么不“docker build”使用交换区域作为额外的RAM并决定杀死构建?

最佳答案
它简单明了.你失去了记忆.你必须通过停止应用程序来释放内存.

Swap通常比实际内存慢一千倍.有很多应用程序会禁止他们的数据交换,例如:

>数据库通常会强制某些关键数据不可交换,以提高性能.
>由于各种原因,内核和驱动程序等低级系统组件无法交换. (如果交换了磁盘驱动程序,如何读取交换磁盘?:D)

Docker依赖于许多低级原语来运行和操作容器,它们很可能需要有真正的内存.因此,当您没有物理内存时,Docker无法运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读