【问题标题】:Allow more memory when docker build a Dockerfiledocker 构建 Dockerfile 时允许更多内存
【发布时间】:2015-01-10 20:21:09
【问题描述】:

我尝试构建一个 Dockerfile,我得到了这个:

Linking CXX executable ../../../../bin/clang
collect2: error: ld terminated with signal 9 [Killed]
make[2]: *** [bin/clang-3.2] Error 1
make[1]: *** [tools/clang/tools/driver/CMakeFiles/clang.dir/all] Error 2
make: *** [all] Error 2

通常这意味着我没有足够的内存。 那么如何使用更大的内存(或交换?)运行 docker build?

谢谢:)

【问题讨论】:

    标签: docker


    【解决方案1】:

    您是否尝试通过 Docker > Preferencess... > Advanced > Ram 增加 docker 的可用内存。它默认只有 2 GB(在 Mac 上)。

    【讨论】:

    • 这就是为我解决问题的方法。编译 go 模块时,我的 docker build 命令失败,内存(从默认的 2 到 5GB)解决了这个问题。谢谢!
    【解决方案2】:

    在构建镜像时,docker 可以访问系统中的所有内存。

    我建议您在构建映像时不要编译,联合文件系统很慢,而且我注意到它会很快耗尽硬盘空间。

    当我需要打包可执行文件时,我要做的是设置一个包含所有编译所需依赖项的容器,然后使用安装在共享卷中的源代码运行它。

    编译代码后,我将可执行文件移动到另一个文件夹中,在该文件夹中我有另一个 Docker 文件,这些文件将可执行文件添加到最小的基础映像(如暂存或忙碌框)中。

    通过这样做,我节省了编译时间,并且最终得到了一个小得多的图像。

    【讨论】:

      【解决方案3】:

      购买新的内存条? :)

      更严重的是,您可能正在虚拟机上运行?您需要更改虚拟机的设置并增加 RAM 大小。

      在 VirtualBox 中,它位于 Settings -> System -> Motherboard -> Base Memory。

      默认情况下,Docker没有内存限制,所以如果内存不足,需要增加主机容量。

      【讨论】:

      • swap没有使用?只有内存?
      • Docker 容器使用虚拟内存,即 RAM+swap。
      • 仅供参考 - 这似乎很明显,但您必须在重新调整内存大小之前停止 VM。
      猜你喜欢
      • 2018-01-03
      • 2018-09-09
      • 1970-01-01
      • 2016-06-16
      • 2018-04-23
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多