Разрешить больше памяти, когда Docker создает Dockerfile
Я пытаюсь создать 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 с большей памятью (или подкачкой?)
Спасибо:)
3 ответа
Вы пытались увеличить доступную для докера память через Docker > Preferencess... > Advanced > Ram. По умолчанию это всего 2 ГБ (на Mac).
При сборке образа докер имеет доступ ко всей памяти в системе.
Я бы порекомендовал вам не компилировать во время создания образа, файловая система объединения работает медленно, и я заметил, что она может быстро исчерпать пространство на жестком диске.
Когда мне нужно упаковать исполняемый файл, я должен настроить контейнер со всеми необходимыми зависимостями для компиляции, а затем запустить его с исходным кодом, смонтированным на общем томе.
После того, как код скомпилирован, я перемещаю исполняемый файл в другую папку, где у меня есть другие файлы Docker, которые ДОБАВЛЯЮТ исполняемый файл в минимальный базовый образ (например, блокнот или поле занятости).
Делая это, я экономлю время на компиляции и получаю гораздо меньшее изображение.
Купить новую флешку?:)
А если серьезно, вы, вероятно, работаете на ВМ? Вам нужно изменить настройки вашей виртуальной машины и увеличить объем оперативной памяти.
В VirtualBox это находится в Настройках -> Система -> Материнская плата -> Базовая память.
По умолчанию Docker не имеет ограничений памяти, поэтому, если у вас недостаточно памяти, вам нужно увеличить емкость хоста.