Ответ 1
Как Alister сказал, существует верхний предел количества слоев в изображении Docker, если вы используете файловую систему AUFS. В версии Docker 0.7.2 предел был увеличен до 127 уровней (changelog).
Поскольку это ограничение основной файловой системы союза (в случае AUFS), использование Quay или других частных реестров не изменит результат. Но вы можете использовать другую файловую систему.
Текущая альтернативная файловая система должна использовать devicemapper
(см. Документы CLI). Эти другие файловые системы могут иметь разные ограничения на количество слоев - я не думаю, что devicemapper имеет верхний предел.
Вы правы, выполнив несколько команд в одном заявлении RUN, вы можете уменьшить количество слоев.
В качестве альтернативы, если вам действительно нужно много слоев для создания изображения, вы можете создать изображение, пока оно не достигнет максимума, а затем используйте docker export
, чтобы создать неровную копию файловой системы изображения. Затем docker import
снова верните его в изображение, на этот раз с одним слоем и продолжите строительство. Тем не менее вы теряете историю.