Слои и кэш сборки
Каждая инструкция в Dockerfile создаёт слой. Docker хранит слои в кэше и повторно использует готовый слой только в том случае, если он сам и всё, что выше него, не изменились. Поэтому порядок важен: располагайте инструкции от наименее изменяемых к наиболее изменяемым, копируя манифест зависимостей и
Представьте стопку прозрачных плёнок, лежащих одна на другой. Измените плёнку у верха стопки — и каждая плёнка над ней будет напечатана заново, но плёнки под ней останутся точно такими же, какими были.
- слой
- Результат одной инструкции Dockerfile — дифференциальное изменение файловой системы, наложенное поверх предыдущих слоёв и сохранённое в кэше.
- кэш сборки
- Набор слоёв, сохранённых от предыдущей сборки; Docker повторно использует их, чтобы пропустить неизменившиеся инструкции и сократить время сборки.
- аннулирование кэша
- Момент, когда входные данные инструкции меняются (например, файл, который она копирует), из-за чего эта инструкция и каждая инструкция после неё выполняются заново, а не берутся из кэша.