Разрешить больше памяти, когда 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 не имеет ограничений памяти, поэтому, если у вас недостаточно памяти, вам нужно увеличить емкость хоста.

Другие вопросы по тегам